既存プロジェクトをAndroidStudio ArcticFoxでビルドできるようにするまで
こんにちは、tkyです。
現在携わっているAndroidプロジェクトの開発環境Android Studio4.1からArcticFoxに切り替えてビルドできるようにするまでをまとめてみました。
皆さんも同じようなところでハマるかもしれないのでこれを読んでおくと心構えができるかもしれません。
やることを列挙します。大きく5つくらいですが、AndroidStudioが出すエラーを1つずつ対応していけばなんとかなります。
- ArcticFoxをインストールする
- AGP(com.android.tools.build:gradle)を7系にする
- JDK11にする
- com.google.gms:google-serviceを最新(2021/8/21現在:4.3.10)にする
- arch.lifecycle関連の依存があればandroidx.lifecycleに移行する
ArcticFoxをインストールする
当たり前ですが、新しい開発環境をインストールしましょう。
私は古いバージョンの4.x系も使用したいのもあり管理が楽な JetBrains ToolBoxを利用しています。
インストールしたらとりあえずビルドができないことを確認してみましょう!
AGPを7にする
今までは4系を使っていたはずですが、飛躍的に7系にアプデします。
理由は下記のリリースブログに記載の通りセマンティックバージョニングを採用したためですね。
- 今まで -> AndroidStudioのバージョン番号に合わせていた
- これから -> Gradle自体のバージョンに合わせる
JDK11にする
AGP7にする要件にもなりますが、Javaのバージョンを上げる必要があります。
AndroidStudioのmenu>preferenceからGradleJDKのバージョンを11にダウンロード及び更新します。
GMSプラグインを最新にする
できる限り最新(2021/8/21現在:4.3.10)が望ましいですが、
『v4.3.9だとGradleのプラグインがうまく動作しない問題がある』
というところだけおさえておけば大丈夫だと思います。
ちなみにv4.3.9でもビルドできますが、起動時以下のエラーで即落ちることになります。
W/FirebaseApp: Default FirebaseApp failed to initialize because no default options were found. This usually means that com.google.gms:google-services was not applied to your gradle project.
androidx.lifecycleに移行する
これは人によって必要なことです。すでにサポート終了しているlifecycle-extensionsの依存がまだ残っていてビルドエラーとなって現れてきました。
以下のページを参考に自分が必要としているライブラリの依存を記述しましょう。
まとめ
以上でおおよその方々がビルドできるようになったかと思います。 以降私のプロジェクトで個別で発生した問題を書いていきます。
余談ですが、この内容を自社のAndroidチームに共有したところ
「うちのプロジェクトではCIが通らなかったんですよね〜」
といった情報をもらえたり
「参考にしてうちのプロジェクトもArcticFoxになりました!」
のように参考にしてもらえたり良い影響が出ました。
みなさんもまずは身近な人に共有してみましょう!
その他ハマったこと、やったこと
'jcenter' is deprecated
まだJCenterの依存が残っていて消すと依存ライブラリでエラーが発生するので一旦このままにして、別途作業することにしました。
Firebase関連をBOM形式に記載し直した
ついでにBOMに記載し直しました。
こういう機会がないとなかなかbuild.gradleのメンテできないので良い機会でした。
protobuf-lite -> protobuf-javalifeに変更
API通信にprotoを使っています。
既存のprotobuf-liteはメンテされていない古いものだったらしく新しいprotobuf-javalifeに変更して対応しました。
その際に参考となったブログ記事がこちらです。助かりました、ありがとうございます。
Circle CIのGraldeオプションをちょっと変更
JDKのガベージコレクタの仕様が変わっているらしくSerialGCになっているようなので明示的にParallelGCに設定しました
-XX:+UseParallelGC
以上です。それでは楽しいAndroid Studioライフを👋