【问题标题】:"No acceptable module found" on Android emulators using com.google.android.gms play-services 9.2.0在使用 com.google.android.gms play-services 9.2.0 的 Android 模拟器上“找不到可接受的模块”
【发布时间】:2016-11-10 03:41:11
【问题描述】:

我最近更新到 com.google.android.gms:play-services 9.2.0 并尝试使用新的 Chromecast 库和 Firebase Analytics,但收到错误“com.google.android.gms.internal. zzsj$zza:找不到可接受的模块。本地版本为 0,远程版本为 0。”在 com.google.android.gms.cast.framework.CastContext.(Unknown Source) 的 Activity onCreate 方法中。如果这是由于 Cast 功能无法与模拟器一起使用或者是版本问题,有什么想法吗?我正在测试的模拟器运行的是 5.0 和 5.1。

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    FirebaseAnalytics mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);
    setupCastListener();
    mCastContext = CastContext.getSharedInstance(this);
    mCastSession = mCastContext.getSessionManager().getCurrentCastSession();
    mCastContext.getSessionManager().addSessionManagerListener(mSessionManagerListener, CastSession.class);
    mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);
}

谢谢

【问题讨论】:

  • 我收到错误消息“找不到可接受的模块。本地版本为 0,远程版本为 0”,我添加了运行时权限并解决了问题。

标签: android firebase chromecast


【解决方案1】:

您的模拟器上的 Play Services 版本不支持 9.2.0。目前,我认为没有任何模拟器图像支持 9.2.0。您的选择是降级到 9.0.2,或者在真实设备上运行,直到发布更新的模拟器映像。

如果您仔细查看 logcat 输出,您应该会看到如下消息:

W/GooglePlayServicesUtil: Google Play services out of date.  Requires 9256000 but found 9080030

您可以通过转到设置/应用程序,找到 Google Play 服务,然后点击它以获取应用程序信息来查看模拟器正在使用的 GPS 版本号。

您可以通过调用GoogleApiAvalability.GOOGLE_PLAY_SERVICES_VERSION_CODE从代码中获取GPS版本号。

This answer 包含一些关于模拟器版本的相关信息。

更新 Adrian Cretu 关于真实设备的问题

我的实验表明,在真实设备上运行的 Cast 应用可以检测到旧版本的 Play 服务并启动解析处理。我尝试了CastVideos 示例应用程序。我的解决方案可能不是最好的,但展示了这个概念。我创建了一个在启动时运行并检查 Play Services 可用性的新活动。我更改了清单以使此活动成为启动器活动,而不是 VideoBrowserActivity

public class InitActivity extends AppCompatActivity {
    private static final String TAG = "InitActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        GoogleApiAvailability googAvail = GoogleApiAvailability.getInstance();

        int status = googAvail.isGooglePlayServicesAvailable(this);
        Log.i(TAG, "onCreate: Status= " + googAvail.getErrorString(status));

        googAvail.makeGooglePlayServicesAvailable(this)
                .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                Log.i(TAG, "onComplete: Done");
                if (task.isSuccessful()) {
                    Log.i(TAG, "onComplete: Starting VideoBrowser");
                    startActivity(new Intent(InitActivity.this, VideoBrowserActivity.class));
                    finish();
                } else {
                    Log.e(TAG, "onComplete: RESOLUTION FAILED");
                }
            }
        });
    }
}

如果 Play 服务存在、最新且已启用,则检查可用性的任务会立即完成并启动 VideoBrowserActivity,即原始启动活动。否则,会出现一个对话框,告诉用户必须升级 Play 服务,在用户接受后,Play 商店将打开,用户可以开始下载最新版本。

我无法找到干净地转换回VideoBrowserActivity 的方法。我不得不重新启动应用程序。通过更多的工作,我认为从过时的 Play Services 中彻底恢复是可能的。至少比应用崩溃要好。

【讨论】:

  • 感谢 qbix。也许我应该重新考虑一下使用这个版本。太糟糕了,演员的功能得到了很大的改进。
  • 感谢您的样品。经过一番挖掘后,似乎在调用 CastContext.getSharedInstance() 时发生了崩溃,我实际上是从服务中调用的。您的方法虽然完全有效,但对开发人员一点也不友好。由于整个 Google API 客户端样板,Cast v2 很痛苦:连接流、错误、回调和用户解决方案(例如打开活动和等待结果),所有这些都只是为了调用简单 URL 的 loadMedia ......我猜想删除所有这数百行代码并切换到 v3 不是一个好主意。
  • 听起来是一个值得单独提问的重要问题。尽管 Google 声称 Play 服务的更新会在几天内推送到手机上,但总会有设备没有最新版本的情况。
【解决方案2】:

这种崩溃也发生在具有未更新 GPS 的真实设备上。我正在使用 Google Cast SDK v3 和 GPS 9.2.0

我没有看到任何地方提到该设备实际上需要 GPS 9.2.0 才能使 Cast v3 工作。什么是解决方法或至少是应用程序在启动时不崩溃的解决方案?

【讨论】:

  • 我认为唯一的解决方案是让用户升级到新的升级播放服务并处理错误。
  • 我不使用 Cast 并且不熟悉它的依赖关系。一般来说,可以使用GoogleApiAvailability 中的方法来解决播放服务不存在或未更新到所需版本的问题。我记得文档中有关于如何执行此操作的指南,但找不到。如果您搜索它,您可能会找到一些示例或更多信息。
  • @qbix - Cast SDK v3 明确不需要与 GPS 客户端可用性进行任何交互作为简化使用的功能。甚至在创建活动之前发生异常,因此没有实际的挂钩来覆盖和检查可用性等;不幸的是,因为 now 过于简化以在幕后工作,所以当最新的 GPS 不存在时,应用程序就会崩溃。对我来说,这更像是一个错误而不是一个功能。
  • 我更新了我的答案以响应您的 cmets。我希望我的实验是使用 Cast SDK v3。我现在检查一下。
【解决方案3】:

当我更新google play developer services app时,我能够解决它。

【讨论】:

  • 这看起来更像是评论而不是答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-23
  • 1970-01-01
  • 1970-01-01
  • 2017-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多