Android地点API:模拟器上的Google Play服务过期

28

我正在尝试在我的Android应用程序中使用Google Places API的PlacePicker功能。但是,每当我尝试创建该选择器时,都会收到以下错误消息:

Google Play services out of date. Requires 7095000 but found 6774470

很不幸,由于没有拥有实体设备,我只能使用模拟器进行测试。该模拟器的镜像是API级别22的x86并且目标是Google APIs。此外,我已经尝试通过build.gradle文件来包含Google Play Services库:

'com.google.android.gms:play-services:7.+'

此外,我已经在SDK管理器中更新了Google Play服务。 我做错了什么? 如何更新我的Google Play服务以便我可以使用Places API?


请检查此问题的解决方案:https://dev59.com/u4Pba4cB1Zd3GeqPq1Yq - Najeebullah Shah
我检查了那个问题的解决方案,但是我已经在使用最新的模拟器镜像,所以我认为它没有帮助。 - user1594328
也许你会在这里找到解决方案。 - Abhishek
1
我遇到了同样的问题(需要7327000但只找到了6774470).. 有什么解决办法吗? - Matias Elorriaga
9个回答

16

我遇到了同样的问题,不得不使用带有谷歌应用程序的 API 21 模拟器映像。那个版本更加现代化且有效。


所以这是模拟器的问题吗?在真实设备上不会发生这种情况? - IgorGanapolsky
@Igor Ganapolsky 这可能发生在用户没有更新他的Google Play服务时,但解决这个问题取决于用户。 - bompf

10

如果SDK管理器显示您已经安装了最新版本,您可以简单地复制您的模拟器定义。

复制的模拟器将加载使用最新版本的SDK。

在此输入图片描述


好消息,对于 Android 来说少了一件非常烦人的事情要处理! - Mike S.

5

当我在Android Wear上使用Google Play服务时,遇到了类似的问题,后来我通过更新我的Android Wear应用程序版本来解决它(因为较新的Android Wear版本包括更新的Google Play服务)。

这个问题是由于您设备上的Google Play服务版本太旧引起的,您应该更新您设备上的Google Play服务版本。

对于模拟器,您需要更新模拟器上的Google Play服务,而不是更新您的SDK


1
你如何在模拟器上更新它?我在模拟器中找不到Play Store。 - Davita
2
您可能需要使用更新的AVD(Android虚拟设备)目标版本。 - Morshues

2

我曾经遇到过同样的问题,现在我“更新”了版本至6774480,并使缓存失效并重新启动,然后我“降级”了依赖项compile 'com.google.android.gms:play-services:6+',这样就可以运行了。我知道这不是一个真正的解决方案,但这是一种解决方法,可以让我测试我的应用程序。


2

正如其他人所说,原因很可能是AVD中安装的Google Play与依赖要求不匹配。除了其他人提出的解决方案外,我尝试将所需的Google Play版本从8.3降低到8.1,问题得到解决。


0

我只在API 22模拟器中遇到了这个问题。21和23都很好,而且我在实际设备上也没有遇到任何问题。

我很好奇这个低版本是否对GCM至关重要,所以修改了代码以继续进行:

if (checkPlayServices()) {
              // Start IntentService to register this application with GCM.
              Intent intent = new Intent(this, ImpatientRegistrationIntentService.class);
              startService(intent);
} else {<<--   Added this as a bypass as my emulator complained about versions
              Intent intent = new Intent(this, ImpatientRegistrationIntentService.class);
              startService(intent);
}

有趣的是,API 22模拟器从GCM获取了令牌,并没有遇到任何问题就接收到了下行推送消息。

0

我的logcat是:

Google Play服务已过期。需要12210000版本,但找到的是11947270。

所以我更改了build.gradle代码。

implementation 'com.google.android.gms:play-services-maps:12.0.0'

implementation 'com.google.android.gms:play-services-maps:11.0.0'

它可以工作


0

这是一个解决方法,因为这里的解决方案都不适用于我。而且,我不想更新我的代码以使用旧版本的play服务。最终,我安装了带有Google Play而不是Google APIs的模拟器,然后当提示出现时,我只需点击更新即可。这将带您进入Google Play商店,您只需要从那里更新play服务即可。唯一的注意事项是,此方法要求您使用Google帐户登录模拟器。但对于我的用例来说,这已经足够了。 Google play instead of google api


这个截图是来自哪个屏幕? - Jake

-1

工具 > Android > SDK Manager 中更新您的软件包,然后检查所有可用更新的Extras中的软件包。

完成此操作后,请在您的(应用程序)build.gradle中使用以下依赖项

compile 'com.google.android.gms:play-services:7.3.0'

1
这并不控制模拟器上安装的Play Services版本。 - IgorGanapolsky
@IgorGanapolsky 它然后做什么? - fulvio
@gotnull 这意味着如果模拟器没有安装最新版本的Play服务,你什么也做不了。 - IgorGanapolsky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接