はじめに:
リリースするときに難読化したら、以下のエラー内容が発動
AndroidJavaException: java.lang.ClassNotFoundException: com.google.android.gms.ads.initialization.OnInitializationCompleteListener
つまり、どうゆうこと?
簡単に説明すると、指定したjavaのクラスファイルが存在しない。このエラーが出ている場合は当然広告も表示されない
再現手順:(自分の環境の場合)
-
[編集]メニュー→[プロジェクト設定]で[Project Settings]を開く
-
[プレイヤーの設定]で、[公開設定]開く
-
[ファイル圧縮]の部分で[R8を使用]と「リリース」にチェックを付ける
環境:
-
Unityバージョン: 2021.3.16f1
-
Google Mobile Ads Unityプラグインバージョン:8.3.0
-
プラットフォーム: Android
-
プラットフォームOSバージョン: Android 5.0 から API レベル 34
-
デバイス: すべて
以下の対応をしましたがダメでした。:
他の方で同じ状況になっていましたので、[Assets] > [Play Services Resolver] > [Android Resolver] > [Force Resolve]
を実行するなど、試行した結果、問題が解決されませんでした。
解決策:
以下のサイトでBuild Settings > Player Settings > Publishing Settings > Custom Proguard File
に移動し、次の行を proguard-user.txt
に追加してください。
https://github.com/googleads/googleads-mobile-unity/issues/2458
1 2 3 4 5 6 7 8 9 10 11 |
-keep <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">com</span>.<span class="hljs-title">google</span>.<span class="hljs-title">unity</span>.** </span>{ *; } -keep <span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">com</span>.<span class="hljs-title">google</span>.<span class="hljs-title">android</span>.<span class="hljs-title">gms</span>.<span class="hljs-title">ads</span>.**</span>{ <span class="hljs-keyword">public</span> *; } -keep <span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">com</span>.<span class="hljs-title">google</span>.<span class="hljs-title">ads</span>.**</span>{ <span class="hljs-keyword">public</span> *; } -keepattributes *Annotation* -dontobfuscate |
結論:
難読化対応やAdmob導入で、不具合または広告が表示されない問題に直面した場合、Proguardの設定を調整することで解決できる可能性があります。指定された行をProguardファイルに追加することで、Obfuscationプロセス中に必要なAdmobのクラスが保持され、ClassNotFoundException
エラーが解消されます。
コメントを残す