Android ChromeCast RuntimeException:远程加载失败。没有发现本地回退

时间:2017-10-11 00:53:38

标签: android google-cast android-cast-api google-cast-sdk

我在我的应用程序中使用强制转换功能。它工作正常但突然间我可以看到Play商店控制台上崩溃次数的增加。

我正在按照指南中的定义正确初始化CastContext。此外,我在调用此方法之前检查设备是否兼容CastContext.getSharedInstance(context)所以这不应该是一个问题。

即使是使用或不使用google-play-services的模拟器,我也无法重现此崩溃。

任何帮助将不胜感激。

崩溃:

致命异常:java.lang.RuntimeException:无法启动活动ComponentInfo {...。activity.TVActivityPhone}: java.lang.RuntimeException:com.google.android.gms.dynamite.DynamiteModule $ zza:远程加载失败。没有发现本地回退。在Android.app.A活动中的android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2677)android.app.A活动。活动(活动传递。) .ActivityThread $ H.handleMessage(ActivityThread.java:1584)在android.app.Loper.loop(Looper.java:194)的android.app.Handler.dispatchMessage(Handler.java:111)android.app.ActivityThread。 main(ActivityThread.java:5877)位于java.lang.reflect.Method.invoke(Method.java)java.lang.reflect.Method.invoke(Method.java:372)的com.android.internal.os.ZygoteInit com.android.internal.os.ZygoteInit.main(ZygoteInit.java:815)中的$ MethodAndArgsCaller.run(ZygoteInit.java:1020)由java.lang.RuntimeException引起:com.google.android.gms.dynamite.DynamiteModule $ zza:远程加载失败。没有发现本地后备。

代码我在条件中收到错误,如果条件意味着,它与Google Play服务可用性无关。

   if (googlePlayServicesVerified(context)) {  // checking (result==ConnectionResult.SUCCES)
      Log.d("TAG", "instantiated");
      castContext = CastContext.getSharedInstance(context);
    } else {
      Log.e(TAG, "FAILED");
    }

提交谷歌的错误

https://issuetracker.google.com/issues/65359941

**更新** 检查这两个问题:

https://issuetracker.google.com/issues/65359941 https://issuetracker.google.com/issues/79405933

临时解决方案在我的回答中。

2 个答案:

答案 0 :(得分:3)

这是临时解决方案。

1)您的应用应始终在使用任何Cast API之前检查GPS版本

2)允许CastContext.getSharedInstance()失败。可能抛出/捕获异常(或者返回null)。

3)确保如果炸药模块无法加载,您不会破坏任何东西。有些UI小部件是隐式初始化的,它们调用CastContext.getSharedInstance(),例如MiniControllerFragment。如果炸药无法加载,你应该避免让它崩溃。

"http://localhost:8000/top?page=1 div.infinite-scroll"

答案 1 :(得分:-1)

当播放服务过期时(主要是运行API 24的模拟器),我遇到了这个问题。这对我有用:

GoogleApiAvailability googleApiAvailability = GoogleApiAvailability.getInstance();

int resultCode = googleApiAvailability.isGooglePlayServicesAvailable(this);

if (resultCode == ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED) {
        googleApiAvailability.getErrorDialog(this, resultCode, 1000).show();
        return;
}
startApp();

我在Activity中运行此代码,检查是否应该启动MainActivity