概要
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前半までの記事は良くあるのですが。。
皆さんどう対応しているのか不思議。
結局公式と海外の記事を頼りにやるしかなかったです。
参考になれば幸いです。
コメント