【问题标题】:Android app crashes when trying to connect to CC receiver尝试连接 CC 接收器时,Android 应用程序崩溃
【发布时间】:2020-03-06 22:57:12
【问题描述】:

我们的一些用户在连接到 Chromecast 接收器时遇到问题。当他们从可用设备列表中选择应用程序中的 CC 设备时,应用程序崩溃。这是崩溃的堆栈跟踪,但 Google 的 SDK 似乎非常神秘,以至于我们不知道实际代码在调用什么。

Fatal Exception: java.lang.NullPointerException: Attempt to invoke interface method 'void com.google.android.gms.internal.cast.zzlp.zzhv()' on a null object reference
       at com.google.android.gms.internal.cast.zzmd.zza + 3(zzmd.java:3)
       at com.google.android.gms.internal.cast.zzmw.zze + 2519(zzmw.java:2519)
       at com.google.android.gms.internal.cast.zzlg$zzb.zzjd + 22(zzlg.java:22)
       at com.google.android.gms.internal.cast.zzlg$zzb.zzjf + 40(zzlg.java:40)
       at com.google.android.gms.internal.cast.zzlg$zzb.zzje + 25(zzlg.java:25)
       at com.google.android.gms.internal.cast.zzlg$zzb.zzjg + 41(zzlg.java:41)
       at com.google.android.gms.internal.cast.zzbc.zzb + 21(zzbc.java:21)
       at com.google.android.gms.internal.cast.zzba.onSessionResuming + 25(zzba.java:25)
       at com.google.android.gms.cast.framework.zzag.zzb + 35(zzag.java:35)
       at com.google.android.gms.cast.framework.zzz.dispatchTransaction + 37(zzz.java:37)
       at com.google.android.gms.internal.cast.zza.onTransact + 13(zza.java:13)
       at android.os.Binder.transact + 675(Binder.java:675)
       at kk.b + 13(kk.java:13)
       at sf.b + 28(sf.java:28)
       at sr.b + 31(sr.java:31)
       at ss.a + 89(ss.java:89)
       at rb.b + 8(rb.java:8)
       at st.handleMessage + 12(st.java:12)
       at android.os.Handler.dispatchMessage + 108(Handler.java:108)
       at zy.dispatchMessage + 5(zy.java:5)
       at android.os.Looper.loop + 216(Looper.java:216)
       at android.app.ActivityThread.main + 7625(ActivityThread.java:7625)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run + 524(RuntimeInit.java:524)
       at com.android.internal.os.ZygoteInit.main + 987(ZygoteInit.java:987)

以下是有关 SDK 和版本的更多信息: 项目 Android 版本:

compileSdk: 28
buildTools: "28.0.3"
minSdk    : 21
targetSdk : 28

CC 的依赖项:

com.google.android.gms:play-services-cast-framework:17.1.0
androidx.mediarouter:mediarouter:1.1.0

我们使用带有 koin 和 livedata 的 androidx 扩展(Jetpack):

implementation "org.koin:koin-android:1.0.2"
implementation "org.koin:koin-androidx-viewmodel:1.0.2"
implementation "org.koin:koin-androidx-scope:1.0.2"
implementation "androidx.core:core-ktx:1.1.0"
implementation "androidx.lifecycle:lifecycle-extensions:2.1.0"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.1.0"
implementation "androidx.lifecycle:lifecycle-livedata:2.1.0"

我应该注意到堆栈跟踪源自 kk.java 类,但其他设备有另一个名称,如 lp.java 或 ke.java。这很可能是因为不同的 Google play-services 实现。

任何帮助将不胜感激:-)

【问题讨论】:

  • s the app crashes 如果您发现NullPointerException 或在使用前检查null,则应用不会崩溃。
  • @blackapps 他没有直接调用代码,那么他应该如何捕捉 NPE?

标签: android casting nullpointerexception crash chromecast


【解决方案1】:

我最近遇到了这种情况,并且我之前工作的 Chromecast 代码中没有任何更改。我怀疑是 Play 服务更新触发了它。无论如何,您的 Proguard/R8 配置正在删除预期的内容。我还没有完全缩小范围,但与此同时,将com.google.android.gms 列入白名单似乎可行。您也可以在使用时添加您的CastMediaIntentReceiverCastOptionsProvider

-keep class com.myapp.CastMediaIntentReceiver { *; }
-keep class com.myapp.CastOptionsProvider { *; }
-keep class com.google.android.gms.** { *; }

【讨论】:

    猜你喜欢
    • 2017-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-12
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    相关资源
    最近更新 更多