AndroidJavaException: java.lang.ClassNotFoundException: com.google.android.gms.ads.initialization.OnInitializationCompleteListener の修正

アプリ開発 開発メモ

AndroidJavaException: java.lang.ClassNotFoundException: com.google.android.gms.ads.initialization.OnInitializationCompleteListener の修正

アプリケーションが落ちたときに検知できるようにFirebase Crashlyticsを導入しています。
今回はそちらで検知されたエラーの修正方法を残しておきます。

実際のエラーメッセージ

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$300(Unknown Source:0)
	at com.unity3d.player.UnityPlayer$e$1.handleMessage(Unknown Source:95)
	at android.os.Handler.dispatchMessage(Handler.java:102)
	at android.os.Looper.loop(Looper.java:236)
	at com.unity3d.player.UnityPlayer$e.run(Unknown Source:20)
Caused by: java.lang.ClassNotFoundException: com.google.android.gms.ads.initialization.OnInitializationCompleteListener
	... 8 more
  at UnityEngine.AndroidJNISafe.CheckException () [0x00000] in <00000000000000000000000000000000>:0 
  at UnityEngine.AndroidJNISafe.FindClass (System.String name) [0x00000] in <000000000000000000000

エラーの内容

実行時にJavaのクラスを見に行ったときに、そのクラスがないよ、というエラーです。
通常のアプリケーションでは、リリースミスなんかで起こるものですね。
今回は、ビルド&パッケージングをUnityに任せているのでUnityの設定を直さないといけません。

修正方法

  1. [編集]メニュー→[プロジェクト設定]で[Project Settings]を開く
  2. [プレイヤーの設定]で、[公開設定]開く
  3. [ビルド]の部分で[カスタムプロガードファイル]にチェックを付ける
  4. すぐ下に表示されたテキストファイルを書き換える(既存のものがある場合は追記する)
  5. [アセット]メニュー→[External Dependency Mangaer]→[Android Resolver]→[Resolve]を実行
-keep class com.google.unity.** {
   *;
}
-keep public class com.google.android.gms.ads.**{
   public *;
}
-keep public class com.google.ads.**{
   public *;
}
-keepattributes *Annotation*
-dontobfuscate

修正後の結果

とりあえずこの修正で直るのを確認しました。


環境情報

Unity 2021.3.19f1

-アプリ開発, 開発メモ
-,