【Unity】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
経緯
Androidアプリリリース時に以下のような文言が出ました。
Google Play Console の申告には、アプリで広告 ID を使用することが記載されていますが、マニフェスト ファイルに com.google.android.gms.permission.AD_ID 権限…
Android13以降から広告IDを使用するために権限の宣言が必要なり、その権限がないため、広告収益が発生しなくなってしまう恐れがありますよ、との注意喚起のようです。
調べてみると、AdMobを使用している場合には、デフォルトでcom.google.android.gms.permission.AD_IDは宣言されているとのことでしたが、Admobを使用しているにも関わらず、宣言されていなかったため、AdMobのアップデートをすることになったが、アップデート後からビルドがうまくいかなくなってしまう。
解決法
ビルド時に使用されている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ビルドができるようになっているはずです。
参考サイト様
https://rarafy.com/blog/2021/08/24/unity-gradle-error/
追記
使用するGradleを変更しても、エラーが再発することがありました。 その際には、元のGradle(チェックを入れたデフォルトの状態)を使用するよう変更すると、ビルドすることができるため、ビルドタイミングにより交互に入れ替えている状態です。 今回の対応では、根本的な解決になっていない感じがします。 ひとまず正常にビルドでき、動作しているため、問題はありませんが、なんだかモヤモヤしますね。


