状況
Unity2020.3 -> Unity2021.3.31にアップデートしたときにFirebase関連のGradleでのビルドがうまく通らなくなりました。
環境
- Unity2020.3.0
- Unity2021.3.31
- Firebase 11.3
- Gradle
エラー1
WARNING: The option 'android.enableR8' is deprecated and should not be used anymore. It will be removed in a future version of the Android Gradle plugin, and will no longer allow you to disable R8. Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0. Use '--warning-mode all' to show the individual deprecation warnings. See https://docs.gradle.org/6.1.1/userguide/command_line_interface.html#sec:command_line_warnings 69 actionable tasks: 66 executed, 3 up-to-date
android.enableR8が非推奨となっていていますというエラーが出ていたので、gradleTemplate.propertiesから
android.enableR8=**MINIFY_WITH_R_EIGHT**
これをコメントアウトしておきます。
R8については以下の記事が参考になりました。
qiita.com
エラーその2
???がいっぱい出たエラー
????????????????????????????????????????????(1.8.0-adoptopenjdk)???Bug Database (http://bugs.java.com)?????????????????????????????????????????????Java bug????????????????????????(http://bugreport.java.com)???Java???????????????????????????bug?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? java.lang.AssertionError: annotationType(): unrecognized Attribute name MODULE (class com.sun.tools.javac.util.UnsharedNameTable$NameImpl)
/Applications/Unity/Hub/Editor/2021.3.31f1/PlaybackEngines/AndroidPlayer/OpenJDK/bin/java -classpath "/Applications/Unity/Hub/Editor/2021.3.31f1/PlaybackEngines/AndroidPlayer/Tools/gradle/lib/gradle-launcher-6.1.1.jar" org.gradle.launcher.GradleMain "-Dorg.gradle.jvmargs=-Xmx4096m" "assembleRelease"
Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
エラー祭りとなりました。
とりあえずGradleのバージョン関係というところにあたりをつけた以下の記事を参考にしてみました。
UnityのAndroidビルドでAPIレベル31にしたらGradle地獄だった話 #Android - Qiita
【Unity】Admob導入後Androidビルドエラーが発生した際の対処法 - ゲーム作るためのこと学ぶdevろぐ(’ー’)/チャラン
どうも上の記事によるとbaseProjectTemplate.gradleの
classpath 'com.android.tools.build:gradle:3.6.0'
をUnityの2021.3からは4系に書き直す必要があるようです。
UnityのGradleとGradleプラグインの関係は以下の記事にありました。
Gradleプラグインの方のバージョンはclasspathに指定する方です。
Unity公式
Unity - Manual: Gradle for Android
Unity version | Gradle version | Android Gradle Plug-in version |
---|---|---|
2021.3 | 6.1.1 | 4.0.1 |
Android公式
Android Gradle プラグインのリリースノート | Android デベロッパー | Android Developers
大丈夫そうなので書き直していきます。
色々書き直すのが面倒なので、
- baseProjectTemplate.gradle
- launcherTemplate.gradle
- mainTemplate.gradel
を一旦削除して、ProjectSettings > Player > Publishing Settingsでもう一度カスタムGradle系のチェックを入れ直します。そうすると再度2021用の書き方に再生成してくれます。
その後 AndroidResolver > Force Resolveします。
これでbaseProjectTemplate.gradleが
classpath 'com.android.tools.build:gradle:4.0.1'
ちゃんと4系になってくれてました。
あとは古いのと差分を見て、必要だったらつけたしすればオッケーです。
これでビルドが通り、無事Androidで動きました。