微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AdMob Android 消息传递平台 (UMP) SDK 应用程序崩溃

如何解决AdMob Android 消息传递平台 (UMP) SDK 应用程序崩溃

我已关注 the guide from documentation 并在我的应用中实现了 SDK。 我在 Firebase 中收到了以下崩溃报告。

Fatal Exception: java.lang.NullPointerException: Attempt to read from field 'c.d.b.c.e.d.y c.d.b.c.e.d.w1.c' on a null object reference
   at com.google.android.gms.internal.consent_sdk.zzj.isConsentFormAvailable(zzj.java:13)
   at [my_app_package].MainActivity$1.onConsentInfoUpdateSuccess(MainActivity.java:1035)
   at com.google.android.gms.internal.consent_sdk.zzu.run(zzu.java:4)
   at android.os.Handler.handleCallback(Handler.java:938)
   at android.os.Handler.dispatchMessage(Handler.java:99)
   at android.os.Looper.loop(Looper.java:239)
   at android.app.ActivityThread.main(ActivityThread.java:8142)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:626)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1015)

有人遇到同样的问题吗?

第一行被混淆了。我认为崩溃是因为内部 SDK 问题。有人知道如何解决这个问题吗?

修正:

当我照原样遵循指南时,我遇到了内存泄漏。因此,我将 getApplicationContext() 传递给 UserMessagingPlatform.getConsentinformation()。这就是应用程序崩溃的原因。相反,我通过了这个。一切顺利。为避免内存泄漏,请在 onDestroy() 方法中为 permitinformation 和 permitForm 变量分配 null。它对我有用。

解决方法

我在调用 isConsentFormAvailable() 时也遇到了崩溃:

java.lang.VerifyError: Verifier rejected class tl: void tl.a(tl) failed to verify: void tl.a(tl): [0x42] cannot access instance field v35 d35.b from object of type Reference: java.lang.Object (declaration of 'tl' appears in /data/app/HTTP://WEBADDRESS.ELIDED--jw7yUT1TEEM3YA7pQGONA==/HTTP://WEBADDRESS.ELIDED)

事实证明需要以下 proguard 规则来修复崩溃:

-keep class com.google.android.gms.internal.consent_sdk.** { <fields>; }
-keepattributes *Annotation*
-keepattributes Signature

Similar rules 存在于旧的同意 SDK 中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。