Unityアセットストア セール情報まとめはこちら
Unityアセットストア セール 7/15まで

約200のアセットが最大50%割引!
開発を効率化して、好きなゲームを作ろう

販売ページはこちら
Unity

【Unity】実機テストで広告が出ない!java.lang.ClassNotFoundException: com.google.unity.ads.UnityAdListener エラー解決方法

Unity アイキャッチ
記事内に広告が含まれています。
スポンサーリンク
赤かぶくん
赤かぶくん

Unityエディターでは広告出るのに、実機テストの時だけ広告が出ないよ。

解決方法があれば教えてほしいな。

まつぼん
まつぼん

そんなお悩みにお答えします!

Unityエディター上は広告がきちんと表示されるのに、いざ実機テストした時は広告が表示されないことがありました。

原因を特定するために「Android Logcat」を使ってログを調べたところ、 「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」ファイルがきちんとインストールされているか確認しましょう。

以前インポートした時に出来た関連ファイルは、全て削除しておきましょう。

関連ファイルとは「ExternalDependencyManager」 や 「GoogleMobileAds」、「Plugins」フォルダ内のファイルを指します。

以前インストールしたファイルが残っていると、正常に動作しない場合があります。

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」にチェックを入れます。

Minify Release(データの軽量化)が必要なければ、チェックを外しても良いです。

その場合は、以下の操作は不要です。

すると「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

詳細はこちらをご参考ください。

Unity/GoogleMobileAds/初期設定 - 初心者エンジニアの簡易メモ

「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」を実施してみてください。

エラーがでてお困りの方は、ぜひ記事の手順をお試しください。

本記事が、皆さんの参考になれば幸いです。

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