在Android模拟器上使用com.google.android.gms play-services 9.2.0“找不到可接受的模块”

我最近更新了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(未知源)的Activity onCreate方法中。 任何想法,如果这是由于演员function不适用于模拟器或如果它是一个版本问题? 我正在testing的模拟器正在运行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); } 

谢谢

Solutions Collecting From Web of "在Android模拟器上使用com.google.android.gms play-services 9.2.0“找不到可接受的模块”"

模拟器上的Play Services版本不支持9.2.0。 在这个时候,我不认为任何模拟器图像支持9.2.0。 您的select是降级到9.0.2,或者在真实设备上运行,直到发布更新的模拟器映像。

如果你仔细看看你的logcat输出,你应该看到这样的消息:

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

你可以看到模拟器使用的GPS版本号,进入设置/应用程序,find谷歌播放服务,并点击它来获取应用程序信息。

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

这个答案包含一些关于模拟器版本的相关信息。

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

我的实验表明,在真实设备上运行的Cast应用程序可能会检测到较旧版本的Play服务并启动parsing处理。 我试验了CastVideos示例应用程序。 我的解决scheme可能不是最好的,但是展示了这个概念。 我创build了一个在启动时运行的新活动,并检查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 Services存在,最新并启用,则检查可用性的任务将立即完成并启动VideoBrowserActivity (原始启动活动)。 否则,会出现一个对话框,告诉用户必须升级Play Services,在用户接受之后,打开Play Store,用户可以启动下载最新版本。

我无法find一个干净的过渡到VideoBrowserActivity 。 我不得不重新启动应用程序。 随着更多的工作,我认为从过时的播放服务的清洁恢复是可能的。 至less比应用程序崩溃更好。

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

我没有看到任何地方提到该设备实际上需要GPS 9.2.0为了演员v3工作。 什么是解决方法或至less是一个解决scheme的应用程序不会在启动时崩溃?

删除模拟器,并在SDKpipe理器中删除构build该模拟器的SDK平台。

然后,重新下载该SDK平台并重新构build您的模拟器。

为什么?

如果您下载了所述SDK平台并构build了该模拟器后,Google Play服务已经有更新,则旧版Google Play服务可能仍在该SDK平台的构build中。

这烧了2个小时的我的生活。