Unityエディターでは広告出るのに、実機テストの時だけ広告が出ないよ。
解決方法があれば教えてほしいな。
そんなお悩みにお答えします!
Unityエディター上は広告がきちんと表示されるのに、いざ実機テストした時は広告が表示されないことがありました。
原因を特定するために「Android Logcat」を使ってログを調べたところ、 「java.lang.ClassNotFoundException: com.google.unity.ads.UnityAdListener」というエラーがでていました。
エラーを解決するのにいくつか試してみて、無事問題を解決することができました。
そこで本記事では、上記エラーの解決方法をご紹介します。
- 環境
- Android Logcatについて
- エラー内容 java.lang.ClassNotFoundException: com.google.unity.ads.UnityAdListener
- エラー解決方法 java.lang.ClassNotFoundException: com.google.unity.ads.UnityAdListener
- その他 エラー解決方法 java.lang.ClassNotFoundException: com.google.unity.ads.UnityAdListener
- java.lang.ClassNotFoundException: com.google.unity.ads.UnityAdListener エラー解決方法 まとめ
環境
Unity バージョン:2020.3.46f1
GoogleMobileAds-v8.5.2.unitypackage
Android Logcatについて
Android Logcatの導入と使い方については、こちらの記事をご参考ください。
エラー内容 java.lang.ClassNotFoundException: com.google.unity.ads.UnityAdListener
Android Logcatでのエラー表示は以下のとおりです。
「java.lang.ClassNotFoundException: com.google.unity.ads.UnityAdListener」というエラーが表示されていました。
「広告表示に関するjavaクラスが見つからない」とのこと。
エラー解決方法 java.lang.ClassNotFoundException: com.google.unity.ads.UnityAdListener
結論から言うと「googlemobileads-unity.aar」ファイルをインストールすると広告が表示されました。
どうやら「googlemobileads-unity.aar」ファイルが存在していなかったことがエラーの原因のようです。
GoogleMobileAds-v8.5.2.unitypackageをインポートする際にチェックを外したのか、ゲーム開発中に誤って「googlemobileads-unity.aar」ファイルを削除してしまったのかもしれません。
再度、GoogleMobileAds-v8.5.2.unitypackageをインポートして、「googlemobileads-unity.aar」ファイルがきちんとインストールされているか確認しましょう。
GoogleMobileAds-v8.5.2.unitypackageをインポート後、「Assets」→「Plugins」→「Android」内に「googlemobileads-unity」と表示があればOKです。
「Android Logcat」のログを見ると、「java.lang.ClassNotFoundException: com.google.unity.ads.UnityAdListener」エラーが消えているかと思います。
実機テストをして、広告が表示されるか確認してみましょう。
その他 エラー解決方法 java.lang.ClassNotFoundException: com.google.unity.ads.UnityAdListener
上記の方法でエラーが解決しない場合は、こちらの2点を試してみてください。
- 「proguard-user.txt」にコードを記述する
- 「Force Resolve」する
以下、詳細を説明します。
「proguard-user.txt」にコードを記述する
コードの難読化が原因で、クラスが見つからずエラーがでることがあります。
その場合は、Progurad除外設定を試してみましょう。
まず、Unityエディターのタブ「Edit」→「Project Settings」→「Player」→「Publishing Settings」を開きます。
Minify Release(データの軽量化)がチェックされている場合、「Custum Proguard File」にチェックを入れます。
すると「Assets」→「Plugins」→「Android」フォルダに「proguard-user.txt」ができます。
「proguard-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
詳細はこちらをご参考ください。
「Force Resolve」する
Unityエディターのタブ「Assets」→「External Dependency Manager」→「Android Resolver」→ 「Force Resolve」から、Force Resolveを試す方法です。
ライブラリの競合を解決します。
java.lang.ClassNotFoundException: com.google.unity.ads.UnityAdListener エラー解決方法 まとめ
本記事では、 java.lang.ClassNotFoundException: com.google.unity.ads.UnityAdListener エラー解決方法についてご紹介しました。
Unityエディターでは広告が表示されるのに、実機テストで広告が表示されない時は、「googlemobileads-unity.aar」ファイルをインストールすると解決できる場合があります。
上記で解決できない場合は、「proguard-user.txt」にコードを記述する方法か、「Force Resolve」を実施してみてください。
エラーがでてお困りの方は、ぜひ記事の手順をお試しください。
本記事が、皆さんの参考になれば幸いです。