Admob在安卓应用中引发NullPointerException异常

19

自上周起,我的应用在发布版中因为某个Admob的bug导致出现致命错误。

Fatal Exception: java.lang.NullPointerException: Attempt to read from field 'com.google.android.gms.ads.internal.overlay.n com.google.android.gms.ads.internal.overlay.AdOverlayInfoParcel.c' on a null object reference
       at com.google.android.gms.ads.internal.overlay.k.f(k.java)
       at com.google.android.gms.ads.internal.overlay.client.b.a(b.java:1)
       at fy.onTransact(fy.java:4)
       at android.os.Binder.transact(Binder.java:662)
       at com.google.android.gms.internal.ads.zzgu.zzb(zzgu.java:21)
       at com.google.android.gms.internal.ads.zzarl.onUserLeaveHint(zzarl.java:54)
       at com.google.android.gms.ads.AdActivity.onUserLeaveHint(AdActivity.java:32)
       at android.app.Activity.performUserLeaving(Activity.java:7470)
       at android.app.Instrumentation.callActivityOnUserLeaving(Instrumentation.java:1476)
       at android.app.ActivityThread.performUserLeavingActivity(ActivityThread.java:4034)
       at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:4016)
       at android.app.servertransaction.PauseActivityItem.execute(PauseActivityItem.java:45)
       at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:145)
       at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1839)
       at android.os.Handler.dispatchMessage(Handler.java:106)
       at android.os.Looper.loop(Looper.java:201)
       at android.app.ActivityThread.main(ActivityThread.java:6864)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)

我无法在测试中重现这个问题,但是根据堆栈信息显示,它是由Admob API的某个内部调用响应于Android本地事件而引起的。

我正在使用的版本是:

'com.google.gms:google-services:4.3.4'
api "com.google.android.gms:play-services-location:17.1.0"
api 'com.google.android.gms:play-services-ads:19.5.0'

我最近收到了完全相同的崩溃报告,这个问题已经在其他地方提交了吗?@robert由于您说您正在等待Abmob修复它,我假设他们已经知道这个问题。您有错误报告的链接吗? - Bastiaan van den Berg
遇到了同样的问题。有人能找到解决方案吗? - Elio Khattar
19.5.0版本上出现了相同的崩溃。我还发现一些开发人员在19.6.0上报告了这个错误。 - EricZhao
19.7.0 上有相同的问题。 - sagis
我们观察到这种情况发生在AdActivity中,我相信这是插页式广告。有人看到这些错误而根本没有提供插页式广告吗? - Brian Chu
显示剩余3条评论
5个回答

2

我从Admob支持团队得到了上述回应,因此给出负评的人要么没有接触过Admob,要么不了解广告的运作方式。 - user3285525

0

这些代码行解决了错误问题:

gradle (app)
    defaultConfig {
        ...
        ...
        useLibrary 'org.apache.http.legacy'
    }

并且在清单文件中

<application
    ...
    ...
    <uses-library
        android:name="org.apache.http.legacy"
        android:required="false" />
    ...
    ...
</application>

0

谷歌Admob SDK团队已经解决了这个问题。根据他们的说法,这个问题不应该再高频出现,并且将在不久的将来完全解决。

从我的Crashlytics中可以看到,我在他们的反馈后没有遇到过这个问题。

完整的讨论线程可以在这里找到: https://groups.google.com/g/google-admob-ads-sdk/c/J6yNYabpeB0/m/zIkSSLEwAgAJ
这个问题是由别人提出的,我稍后跟进了一下。


这取决于你的应用使用情况,我的应用每天有超过30,000个用户...所以如果其中1%的用户遇到错误,那么在Crashlytics中弹出的错误就会很多,然后它开始向我发送警报“许多会话正在崩溃”、“错误警报”等等...我不喜欢这样。 - Rafael Lima

0

好的,我不知道这个问题的完美解决方案,因为我认为在
com.google.android.gms:play-services-ads:19.5.0 或者 19.6.0 中存在一个错误。请看 thread

临时解决方案是使用
com.google.android.gms:play-services-ads:19.3.0


-1

请更新到最新版本并检查Internet权限清单。

implementation 'com.google.firebase:firebase-analytics-ktx'
implementation 'com.google.android.gms:play-services-ads:19.7.0'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接