android - 尝试连接CC接收器时Android应用程序崩溃

标签 android casting nullpointerexception crash chromecast

我们的某些用户遇到了与Chromecast接收器的连接问题。当他们从可用设备列表中选择应用程序中的CC设备时,该应用程序将崩溃。这是崩溃的堆栈跟踪,但是Googles 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和版本的更多信息:
Project 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

我们将androidx扩展(Jetpack)与koin和livedata结合使用:
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"

我应该注意,stacktrace源自kk.java类,但是其他设备具有另一个名称,如lp.java或ke.java。这很可能是由于Google播放服务实现方式不同。

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

最佳答案

我最近遇到了这个问题,并且在以前使用的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.** { *; }

关于android - 尝试连接CC接收器时Android应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58798240/

相关文章:

android - 解析XML时出错; xml文件格式不正确( token 无效)

java - Android Java 类转换

c# - 通用小数不能从 double 转换

Android: Activity 中 MapView onDestroy 上的奇怪 npe

Android:MapActivity 给出 Nullpointerexception

android - 我可以循环播放存储在 videoview 中原始文件夹中的多个视频吗?

android - 如何在 Android 中使用代码绘制的 Canvas 动画?

c# - 使用获取类型,然后在 C# 中转换为该类型

java - 什么是 NullPointerException,我该如何解决?

android - 上次 sdk 更新后,android studio 找不到任何 google play 服务或 firebase 库