Unity3d 加载Admob智能横幅时游戏崩溃

Unity3d 加载Admob智能横幅时游戏崩溃,unity3d,admob,smartbanner,Unity3d,Admob,Smartbanner,我只是将游戏升级到Unity 2019.2.0f1和Admob 3.18.2 现在,当我加载smart banner时,它崩溃了(其他adsize工作正常) 以下是日志: java.lang.NullPointerException:尝试调用虚拟方法 'boolean com.google.android.gms.ads.AdSize.equals(java.lang.Object)' 关于空对象引用08-03 14:57:29.307 19834 19834 E AndroidRuntime:

我只是将游戏升级到Unity 2019.2.0f1和Admob 3.18.2

现在,当我加载smart banner时,它崩溃了(其他adsize工作正常)

以下是日志:

java.lang.NullPointerException:尝试调用虚拟方法 'boolean com.google.android.gms.ads.AdSize.equals(java.lang.Object)' 关于空对象引用08-03 14:57:29.307 19834 19834 E AndroidRuntime:在 com.google.android.gms.internal.ads.zzwu.zza(com.google.android.gms:play services ads lite@@18.1.1:248) 08-03 14:57:29.307 19834 19834 E AndroidRuntime:at com.google.android.gms.internal.ads.zzwu.zza(com.google.android.gms:play services ads lite@@18.1.1:87) 08-03 14:57:29.307 19834 19834 E AndroidRuntime:at com.google.android.gms.ads.BaseAdView.loadAd(com.google.android.gms:play services ads lite@@18.1.1:15) 08-03 14:57:29.307 19834 19834 E AndroidRuntime:at com.google.android.gms.ads.AdView.loadAd(com.google.android.gms:play services ads lite@@18.1.1:18) 08-03 14:57:29.307 19834 19834 E AndroidRuntime:at com.google.unity.ads.Banner$5.run(Banner.java:278)08-0314:57:29.307 1983419834E安德鲁尼时间:在 android.os.Handler.handleCallback(Handler.java:789)08-0314:57:29.307 1983419834E安德鲁尼时间:在 android.os.Handler.dispatchMessage(Handler.java:98)08-03 14:57:29.307 1983419834E安德鲁尼时间:在 android.os.Looper.loop(Looper.java:164)08-0314:57:29.3071983419834 E AndroidRuntime:在 android.app.ActivityThread.main(ActivityThread.java:6944)08-03 14:57:29.307 19834 19834 E AndroidRuntime:在 java.lang.reflect.Method.invoke(本机方法)08-03 14:57:29.307 1983419834E安德鲁尼时间:在 com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) 08-03 14:57:29.307 19834 19834 E AndroidRuntime:at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

代码如下:

m_BannerView = new BannerView(adUnitId, AdSize.SmartBanner, AdPosition.Bottom);

m_BannerView.OnAdLoaded += HandleOnAdLoaded;
m_BannerView.OnAdFailedToLoad += HandleOnAdFailedToLoad;
m_BannerView.OnAdOpening += HandleOnAdOpened;
m_BannerView.OnAdClosed += HandleOnAdClosed;
m_BannerView.OnAdLeavingApplication += HandleOnAdLeavingApplication;

AdRequest request = new AdRequest.Builder().Build();
m_BannerView.LoadAd(request);

googleads mobile unity github上有一条关于此问题的帖子:

其中一名撰稿人答复说: 我建议使用Unity版本2019.1.11f1,直到我们确定故障原因 这我们认为,这可能是一个团结的问题,正如Smart横幅所提到的那样
即使proguard关闭,也为空。

luvjungle的解决方案,更具体地说,Juan Bentel的评论对我来说很有吸引力
“另一个发布了一个工作补丁!资产/GoogleMobileAds/Platforms/Android/Utils.cs中的GetAdSizeJavaObject似乎已损坏。第一次返回必须更改为:返回新的AndroidJavaObject(AdSizeClassName,adSize.Width,adSize.Height)。GetStatic(“SMART_BANNER”);-Juan Bentel 8月11日8:03”

另一个发布了一个工作补丁!资产/GoogleMobileAds/Platforms/Android/Utils.cs中的GetAdSizeJavaObject似乎已损坏。第一个返回必须更改为:returnnewandroidjavaobject(AdSizeClassName,adSize.Width,adSize.Height).GetStatic(“智能旗帜”);