【发布时间】:2018-12-30 11:32:23
【问题描述】:
我的应用在尝试通过 AdMob for Unity 加载或显示插页式广告时出现以下错误:ClassNotFoundException: com.google.unity.ads.UnityAdListener。
AndroidJavaException: java.lang.ClassNotFoundException: com.google.unity.ads.UnityAdListener
java.lang.ClassNotFoundException: com.google.unity.ads.UnityAdListener
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:453)
at java.lang.Class.forName(Class.java:378)
at com.unity3d.player.UnityPlayer.nativeRender(Native Method)
at com.unity3d.player.UnityPlayer.c(Unknown Source:0)
at com.unity3d.player.UnityPlayer$e$2.queueIdle(Unknown Source:72)
at android.os.MessageQueue.next(MessageQueue.java:394)
at android.os.Looper.loop(Looper.java:142)
at com.unity3d.player.UnityPlayer$e.run(Unknown Source:32)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.unity.ads.UnityAdListener"
我的主要广告代码是:
public class AdsTest : MonoBehaviour
{
private InterstitialAd interstitial;
public void LoadAd()
{
string adUnitId = "ca-app-pub-3940256099942544/1033173712";
interstitial = new InterstitialAd(adUnitId);
interstitial.OnAdLoaded += HandleOnAdLoaded;
interstitial.OnAdFailedToLoad += HandleOnAdFailedToLoad;
interstitial.OnAdOpening += HandleOnAdOpened;
interstitial.OnAdClosed += HandleOnAdClosed;
interstitial.OnAdLeavingApplication += HandleOnAdLeavingApplication;
AdRequest request = new AdRequest.Builder().Build();
interstitial.LoadAd(request);
}
public void ShowAd()
{
if (interstitial.IsLoaded())
{
interstitial.Show();
}
}
...
}
AdsTest 类的其余部分是标准事件无效(OnAdLoaded、OnAdClosed 等),与 Google's docs 中的相同。
从另一个类调用广告脚本:
void OnTriggerEnter2D(Collider2D trigger)
{
ReturnToStart();
// where ads is a instance of the AdsTest class
// ads = new AdsTest();
ads.LoadAd();
ads.ShowAd();
}
我已经在游戏开始时在控制器对象中初始化了 AdMob Id。
// executed when the app starts
string appId = "ca-app-pub-3522556458609123~3670809634";
MobileAds.Initialize(appId);
我已从 unity-package 导入所有资产并强制解决播放服务依赖项。
我的 AndroidManifest 也是这样的:
环境和版本控制:
Unity - 2018.3.0f2 Personal for Windows 10 x64
Android SDK - 27
AdMob 插件 - v3.15.1(从 Github 下载)
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) Client VM (build 25.191-b12, mixed mode, sharing)
播放服务 - 通过 Admob 包安装
在 Android 8.1、API 27 上测试
【问题讨论】:
-
将 admob 插件导入新项目并实施示例项目检查工作正常,然后打开您的主项目并比较播放器设置应该相同。我是这样解决的。