AdMobアップデート後のAndroidビルドでつまづいた話
UnityのAdMobをアップデート後、Androidビルドでつまづくようになりました。
エラー内容は以下のような感じです。
Build failure
java.lang.UnsupportedOperationException: This feature requires ASM7 See the Console for details.
- Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
- CommandInvokationFailure: Gradle build failed.
- Build completed with a result of 'Failed' in 61 seconds (61179 ms)
- UnityEditor.BuildPlayerWindow+BuildMethodException: 4 errors
経緯
Google Play Console の申告には、アプリで広告 ID を使用することが記載されていますが、マニフェスト ファイルに com.google.android.gms.permission.AD_ID 権限....
解決法
ビルド時に使用されているGradleのバージョンが悪かったようです。
自身の環境に合いそうなGradleをインストールし、それを使用するよう設定します。
私は、Macでの設定方法を記載しますが、Windowsで対応する場合は、参考サイト様の記事(下の方に記載してあります)を読まれると良いと思います。
(Unityのパスが若干違うだけで、内容に大差はありません。)
Gradleの公式ページより、合いそうなバージョンのGradleをダウンロードします。
※ 私は、AdMob7.2に対し、Gradle6.9.3を取得しました。
解凍したGradleファイルを以下の場所に配置します。
2021.3.11f1はエディターバージョンのため、自身の環境に置き換えてください。
/Applications/Unity/Hub/Editor/2021.3.11f1/PlaybackEngines/AndroidPlayer/Tools/gradle/
次にUnityを開いて、使用するGradleを変更します。
上部メニューより、Unity > Preferencesを選択し、External Toolsを開きます。
上記画像の赤枠内、「Gradle Installed with Unity (recommended)」と記載されている部分のチェックを外し、先ほど配置したGradleのパスを入力します。
これで、ビルド時に使用されるGradleが別バージョンに切り替わりました。
バージョンに問題がなければ、Androidビルドができるようになっているはずです。
参考サイト様
【Unity】Unity2020で最初からAndroidのGradleビルドが上手くいかない
追記
使用するGradleを変更しても、エラーが再発することがありました。
その際には、元のGradle(チェックを入れたデフォルトの状態)を使用するよう変更すると、ビルドすることができるため、ビルドタイミングにより交互に入れ替えている状態です。
今回の対応では、根本的な解決になっていない感じがします。
ひとまず正常にビルドでき、動作しているため、問題はありませんが、なんだかモヤモヤしますね。