[英]Unity AdMob - ClassNotFound: com.google.unity.ads.UnityAdListener
尝试通过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类的其余部分是标准事件void(OnAdLoaded,OnAdClosed等),与Google文档中的相同 。
从另一个类调用广告脚本:
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中导入了所有资产,并强制解决了play服务的依赖关系。
我的AndroidManifest看起来也像这样:
Unity-Windows 10 x64的2018.3.0f2 Personal
Android SDK-27
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上测试
我认为某些依赖项存在冲突,并且在依赖项解析器修复它们的同时,ProGuard甚至使事情更加混乱。 这是我解决此特定问题的方法:
-keep class com.google.unity.** {
*;
}
-keep public class com.google.android.gms.ads.**{
public *;
}
-keep public class com.google.ads.**{
public *;
}
-keepattributes *Annotation*
-dontobfuscate
有关更多详细信息,请参阅我撰写的有关此问题的博客文章 。
注意:在具有最新版本的AdMob和Android SDK的最新项目中,没有出现此问题。 (截至2019年5月)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.