admob - AdMob Android 消息传递平台 (UMP) SDK 应用程序崩溃
问题描述
我已按照文档中的指南并在我的应用程序中实现了 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()。这就是应用程序崩溃的原因。相反,我通过了这个(活动上下文)。现在一切都很好。为避免内存泄漏,请将 null 分配给 onDestroy() 方法中的许可信息和许可表单变量。它对我有用。
解决方案
我在调用 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
旧的许可 SDK 中存在类似的规则。
推荐阅读
- image - 通过 API 从 Instagram 帐户获取照片
- python - 无法找出在脚本中使用代理轮换来加速执行过程的正确方法
- javascript - 如何在 Reactjs 中使用搜索栏过滤表格行
- firebase - Firebase 实时数据库验证编号增量
- javascript - 使用 Jest 的 React.js 自定义钩子测试
- aop - Maven 测试用例不调用 AspectJ 方面
- android - 为什么我们需要 ViewModelProvider.Factory 将视图模型传递给屏幕?
- python - 尝试使用动态文本和确认按钮编写 tkinter 弹出窗口
- tensorflow - 运行“tfio.experimental.image.decode_tiff(...)”显示“死内核”
- python - Django中每个客户的订单价值计数和总和(通过迭代)