TAKOYAKING’s blog 一覧

TAKOYAKING’s blog

たこ焼き系

Unity: FirebaseでGradleでのビルドが通るまで

状況

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

forum.unity.com

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で動きました。

感想

本当は2022.3にしたかったのですが、そちらはgradleの書き方も大きく変わっていて、同じやり方をしてもビルドは通るのですが、起動するとエラーが発生してしまって、一旦断念しました。
Googleの最新API対応の期日がもうないので、2021に対応して、Firebaseも新しくしたので、一旦これでOKとしておきます。