AdMobのAndroid実機テストの際に広告が表示されない

スポンサーリンク
スポンサーリンク
スポンサーリンク

概要

AdMobをAndroid実機にてテストしようとした際に表示がされなかったので、対応について書きました。
Unityエディタでは普通に見えているので、やっかいです。
Logcatで確認してみると、以下のエラーが出ていて、Admobのなにかが悪さをしていそう。
Error Unity AndroidJavaException: java.lang.ClassNotFoundException: com.google.android.gms.ads.initialization.OnInitializationCompleteListener

これで直ったという情報もあったので、
効果のなかった対応もありますが、試した内容すべて残しておきます。

エラー詳細

AndroidJavaException: java.lang.ClassNotFoundException: com.google.android.gms.ads.initialization.OnInitializationCompleteListener
java.lang.ClassNotFoundException: com.google.android.gms.ads.initialization.OnInitializationCompleteListener
	at java.lang.Class.classForName(Native Method)
	at java.lang.Class.forName(Class.java:454)
	at com.unity3d.player.UnityPlayer.nativeRender(Native Method)
	at com.unity3d.player.UnityPlayer.access$500(Unknown Source:0)
	at com.unity3d.player.UnityPlayer$e$1.handleMessage(Unknown Source:114)
	at android.os.Handler.dispatchMessage(Handler.java:102)
	at android.os.Looper.loopOnce(Looper.java:201)
	at android.os.Looper.loop(Looper.java:288)
	at com.unity3d.player.UnityPlayer$e.run(Unknown Source:20)
Caused by: java.lang.ClassNotFoundException: com.google.android.gms.ads.initialization.OnInitializationCompleteListener
	... 9 more
  at UnityEngine.AndroidJNISafe.CheckException () [0x00000] in <00000000000000000000000000000000>:0 
  at UnityEngine.AndroidJNISafe.FindClass (System

対応方法

Resolve

Assets > External Dependency Manager > Android Resolver > Resolve

エラー事象の変化なし

Force Resolve

Assets > External Dependency Manager > Android Resolver > Force Resolve

エラー事象の変化なし

Custom Progurard File

結局こちらの方法で解決できました。

File > Build Settings > Player Settings
下の方にあるCustom Progurard Fileにチェック
指定したパスのproguard-user.txtを修正

progurad-user.txt内容

-keep class com.google.unity.** {
   *;
}
-keep public class com.google.android.gms.ads.**{
   public *;
}
-keep public class com.google.ads.**{
   public *;
}
-keepattributes *Annotation*
-dontobfuscate

ErrorがなくなってWarnになりました。

Warnの内容

ziparchive Unable to open '/data/user/0/xxx/cache/1675452915457.dm': No such file or directory
ConnectionStatusConfig Dynamic lookup for intent failed for action: com.google.android.gms.ads.service.CACHE
ziparchive Unable to open '/data/user/0/xxx/app_pccache/5/E9727F34D52452B99BACD748F32C5CBC58340B83/pcam.dm': No such file or directory
pool-11-thread- type=1400 audit(0.0:41867): avc: granted { execute } for path="/data/data/xxx/app_pccache/5/E9727F34D52452B99BACD748F32C5CBC58340B83/pcam.jar" dev="dm-12" ino=90641 scontext=u:r:untrusted_app:s0:c196,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c196,c256,c512,c768 tclass=file app=xxx
Ads Not retrying to fetch app settings
ConnectionStatusConfig Dynamic lookup for intent failed for action: com.google.android.gms.ads.service.START

変更直後は広告は表示されなかったですが、少し経つと、バナーが表示されるようになりました!!

まとめ

Custom Proguard Fileを作成することで解決できましたが、
それ以前のForce Resolveも効いている可能性があります。

それにしてもAdmobの仕様が変わってからの情報が少なくて、コーディングの仕方にかなりてこずりました。2022前半までの記事は良くあるのですが。。

皆さんどう対応しているのか不思議。
結局公式と海外の記事を頼りにやるしかなかったです。
参考になれば幸いです。

ゲーム開発
スポンサーリンク
スポンサーリンク
シェアする
トリをフォローする
スポンサーリンク
てくライフ

コメント

タイトルとURLをコピーしました