我们的某些用户遇到了与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
我们使用带有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"
我应该注意,stacktrace源自kk.java类,但是其他设备的名称也很像lp.java或ke.java。这很可能是由于Google播放服务的实现方式不同。
任何帮助,将不胜感激:-)
我最近遇到了这个问题,在以前使用的Chromecast代码中,我没有做任何更改。我怀疑Play服务更新已触发它。无论如何,您的Proguard / R8配置正在删除预期的内容。我还没有完全缩小范围,但是与此同时,将白名单com.google.android.gms
似乎可以工作。您也可以同时加入CastMediaIntentReceiver
和CastOptionsProvider
。
-keep class com.myapp.CastMediaIntentReceiver { *; }
-keep class com.myapp.CastOptionsProvider { *; }
-keep class com.google.android.gms.** { *; }