如何为Android Studio 2.2模拟器更新Google Play服务?

28
这个问题有很多变种,但大部分都非常老旧,实际上并没有回答这个问题。我不是在问如何安装Play Services,因为它已经安装在Studio 2.2模拟器中。
问题在于这些模拟器正在使用旧版本的Play服务。
当我运行一个使用Firebase来实现Google登录的测试应用程序时,在Nexus 5 API 23模拟器中会出现此警示对话框:

enter image description here

在我的登录活动的onCreate方法中,我有以下代码:
int result = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);

    switch(result) {
        case ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED:
            Log.d(TAG,"SERVICE_VERSION_UPDATE_REQUIRED");
            break;
        case ConnectionResult.SUCCESS:
            Log.d(TAG, "Play service available success");
            break;
        default:
            Log.d(TAG, "unknown services result: " + result);

    }

这总是返回SERVICE_VERSION_UPDATE_REQUIRED。 在警告对话框中点击更新,我无法检测到任何操作。当Play服务启动失败时,在调试日志中我得到了这个消息:
W/GooglePlayServicesUtil: Google Play services out of date.  Requires 9080000 but found 8489470

我的应用在真实的安卓设备上运行良好。

我错过了什么简单的东西吗?

TIA


你的模拟器可能没有Play商店,所以你需要通过侧载Play服务apk来安装。 - OneCricketeer
你正在使用Genymotion吗? - Ali Bdeir
请参考此答案:https://dev59.com/Zpzha4cB1Zd3GeqPJLfG - MethodMan
1
@cricket_007 不,如果他在模拟器映像中没有Play商店,应用程序将立即崩溃或返回SERVICE_MISSING。 - Starwave
现在您可以使用预安装有Play商店的模拟器,并且更新变得非常容易。 - user345280
8个回答

21

虽然这可能与当前问题无关,但我想在此发布它供未来的探索者参考,以便他们看到海的尽头有一块陆地。我一直在尝试使用Firebase通知,在我的Nexus 5 x86模拟器上运行API 25,但由于Google Play服务过时而苦苦挣扎。我正在使用需要Google Play服务10.0.1的Firebase 10.0.1。但是在我的模拟器上,我总是会收到以下消息:

W/GooglePlayServicesUtil: Google Play services 过时。需要 1008400,但发现 9874900

W/FA: 服务连接失败:ConnectionResult{statusCode=SERVICE_VERSION_UPDATE_REQUIRED, resolution=null, message=null}

我曾经费尽心思地寻找更新模拟器中的Google Play服务的方法,但无论建议什么都没有起作用。最后,我尝试创建一个新的模拟器Nexus 5 x86_64和API 24。哇!它有Google Play Services 10.0.1,我的应用程序现在可以工作了。

我真的不明白为什么x86映像没有最新的Google Play服务,并且以任何方式都不允许我进行更新,而x86_64映像却具有最新的Google Play服务。

希望这能够帮助一些遇到Google Play服务问题的人。


8

关于我的情况,我尝试在Android Studio和Google Play服务上检查更新,并重新启动了Android Studio。然后更新对话框出现了,允许我使用正确的Google Play服务版本更新模拟器映像。

enter image description here

等待更新完成,然后基于新更新的镜像创建新的AVDs,一切都会很顺利。

4
假设您正在使用Android的默认AVDs,而不是Genymotion,则只需确保一切都已更新。以下是对我有效的操作。如果您正在使用当前版本的Play服务(9.6.1或更高版本),请确保执行以下操作: 1. 您的构建工具版本为24.0.3或更高版本。 2. 在SDK Manager(SDK平台选项卡)中: - 如果测试Nougat,请使用Google APIs系统镜像修订版8或更高版本的模拟器(我使用“Google APIs Intel x86 Atom_64 System Image”)。 - Google APIs已安装并更新(对我来说,“Google APIs,Android 24”-修订版1.0.0)。
3. 在SDK Manager(SDK工具选项卡)中: - Android SDK平台工具的版本为24.0.3或更高版本。 - Android SDK工具的版本为25.2.2或更高版本。 - Google Play服务已安装,并且使用33或更高版本。 - (可能可选)已安装谷歌存储库,版本为36或更高版本。
在确认上述所有内容后,并重新启动Android Studio(因为安全第一),制作新的AVD。我主要使用以下设置: - 牛轧糖(API 24) - ABI-x86_64 - 目标-Android 7.0(带有Google APIs)
这对我很有效,早上我也遇到了同样的问题,直到我更新了所有内容。祝好运 :)

2
如果人们仍在寻找答案,并且没有找到任何修复或更新模拟器上Google Play服务的解决方案,这里是帮助我的方法。我已经遵循了多个SO帖子,建议获取最新的SDK构建工具,但错过了一个非常重要的更新。也就是说,从SDK平台中,您必须更新/下载Google Play Intel x86 Atom系统映像。
一张图片胜过千言万语:enter image description here

0
我不是在问如何安装Play服务,因为它已经安装在Studio 2.2模拟器中了。
但是你似乎正在询问如何更新它,如果是这样的话,你确实需要知道如何安装它。
问题在于这些模拟器正在使用旧版本的Play服务。
是的,这就是错误提示。
可能性一:你的模拟器和/或SDK库已经过时,你需要一个新的AVD。
可能性二:去下载最新的Play服务APK并安装它。你可以使用adb来安装它,例如,Genymotion将允许你通过将APK文件拖到模拟器上来安装它。

为什么错误对话框上的“更新”按钮不能正确更新它? - Jim In Texas
1
因为这可能链接到 Play Store,而模拟器上没有 Play Store。 - OneCricketeer
我遇到了与模拟器相关的同样问题 - https://dev59.com/L5jga4cB1Zd3GeqPJWFC - 尽管当我尝试从你提供的网站下载最新的Play Services APK时,点击下载APK时会导致浏览器崩溃。 - Geoff
1
我正在使用Android Studio 2.1.2附带的模拟器。我也尝试过最新的2.2预览版本。所以告诉我“你需要一个新的AVD”并没有什么帮助。我认为那个Google链接不兼容模拟器。 - Jim In Texas
尝试安装APK,但SDK抱怨之前的旧版本仍然存在。可以卸载先前的版本,然后安装APK吗?如何更新Android Nougat中的Google Play服务? - Han Whiteking
@Han 我不明白为什么你不能通过这种方式升级。 - OneCricketeer

0

对我有用的方法是:

  1. 检查并安装任何新更新。您需要确保安装最新版本的Google Play服务。此外,您可以在SDK管理器中检查您正在使用的Google Play服务版本。

  2. 删除AVD(Android虚拟设备)管理器中的所有模拟器。

  3. 创建新的模拟器。

之后应该可以正常工作!


0

这个软件包只适用于 Android 4.2.2 及以上版本,在这里我以 (API 17) 为例。它将会正常工作。

让我们开始启动 SDK 管理器。首先,我们需要确保已安装 Android 4.2.2 (API 17) 及更高版本。

[shubham@localhost tools]$ ./android sdk

如果没有安装,检查顶层元素“Android 4.2.2(API 17)”,点击“安装6个包”,并接受许可协议。

设置镜像

为了获取您的虚拟设备管理器的正确镜像:

  • 打开Android SDK Manager
  • 打开组Android 4.2.2(API 17)
  • 检查Google APIs
  • 检查ARM EABI v7a系统映像

    [![Google Android sdk required tool][1]][1]

安装完成后,关闭SDK管理器并启动AVD管理器。在这里,我们需要创建一个新的AVD,它利用Android 4.2.2平台,并启用快照,以便我们所做的任何更改都是持久的。

[shubham@localhost tools]$ ./android avd

接下来,我们需要下载适当的Google应用程序包。对于使用Android 4.2.2(API 17)及更高版本的设备,我们必须根据以下链接使用适当的软件包。

[https://www.androidfilehost.com/?w=files&flid=5649][2]

下载完成后,请提取档案。为了安装 Google Play,我们需要将以下三个 APK 推送到我们的 AVD(位于 ./system/app/):

  • GoogleServicesFramework.apk
  • GoogleLoginService.apk
  • Phonesky.apk
然而,在我们开始之前,我们需要对我们的AVD进行一些小的修改。让我们使用下面的命令启动新创建的AVD。请注意,我们已经指定了512MB的分区大小。这是为了确保我们的AVD有足够的容量来安装Google Play商店及其依赖项。
[shubham@localhost tools]$ ./emulator -avd Test -partition-size 512 -no-boot-anim

这可能需要几分钟的时间,因为AVD正在创建。一旦启动,我们需要重新挂载AVD的分区并修改“/system/app/”目录的权限,因为这是我们要安装软件包的位置。

[shubham@localhost platform-tools]$ ./adb remount
[shubham@localhost platform-tools]$ ./adb shell chmod 777 /system/app

最后,我们可以将这些APK推送到我们的AVD:

[shubham@localhost platform-tools]$ ./adb push ~/system/app/GoogleServicesFramework.apk /system/app/
[shubham@localhost platform-tools]$ ./adb push ~/system/app/GoogleLoginService.apk /system/app/
[shubham@localhost platform-tools]$ ./adb push ~/system/app/Phonesky.apk /system/app/

如果您的模拟器和我的一样慢,安装包可能需要几分钟才能安装完成。如果安装尚未完成,则启动器进程会反复崩溃;)

几分钟后,我们应该在菜单启动器中看到Google Play包。在将Google帐户与此AVD关联后,您现在可以在模拟器下运行完全可用的Google Play版本。

请参考此链接:[http://www.flinkd.org/2013/12/installing-google-play-on-the-android-emulator-api-18/][3]

这样就可以了。有关更多信息和教程,请观看以下视频教程:-[https://www.youtube.com/watch?v=Nq5mng20PC8][4]

      [1]: http://i.stack.imgur.com/Xn2cX.png
      [2]: https://www.androidfilehost.com/?w=files&flid=5649
      [3]: http://www.flinkd.org/2013/12/installing-google-play-on-the-android-emulator-api-18/
      [4]: https://www.youtube.com/watch?v=Nq5mng20PC8

-5

在API 25和Studio 2.2.3上出现了同样的问题,通过更改行来解决。

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

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

在 build.gradle(Module:app) 文件中,在等待模拟器镜像中 Google Play 服务的更新。

1
降级有时不是一个选项,也不被推荐。 - Javier

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