问题

我想在模拟器上安装Google Play。 问题是网上没有指南可以准确地告诉我该怎么做。 我不确定为什么,似乎他们使用的是旧版Android Market(3版之前的版本),或者至少有人展示了一些截图,但我无法使其在家里使用。 所不同的是,我尝试在Ice Cream Sandwitch模拟器(API级别15)上安装Google Play,但始终失败。

第一次尝试

我首先找到了这个网站。 我尝试从那里设置所有内容,但是我无法使其正常运行。 可能因为他们的Vending.apk无法启动,我不知道。 然后,我找到了该站点,并以某种方式使用此指南在模拟器上安装了Vending.apk,但无法复制。

这些指南的问题之一(这使我花了很多时间在无用的东西上)是这两个指南使我从AVD删除了两个文件:cache.img和userdata-qemu.img。 为什么? 显然,当您想重新启动仿真器时,这些文件负责将仿真器重新初始化为启动状态(例如完全擦除/恢复出厂设置)。 我试了又试,最后我总是不做任何改变。

新希望

之后,我发现在AVD配置窗口中有一个快照选项,因此我进行了检查,终于可以看到模拟器的最新状态。 也许它并不完美–就像笔记本电脑上的Hibernate模式一样–但是它可以正常工作,经过一整天的战斗,就足够了。

那我为什么还要安装一些过时的Vending.apk和GoogleServicesFramework.apk? 为什么那里不能有新的? 因此,我连接了手机并从中拉出了那些apk。 当然没有用,但是我不确定为什么。 但是我想起了什么– CyanogenMod用zip打包了Google应用(更新:CyanogenMod不再托管Google Apps,但您可以在这里找到它们!因此,我下载了它们的包并提取了我需要的所有内容-Vending.apk和GoogleServicesFramework.apk。但这还不够。

因此,我在启用了快照的情况下设置了AVD,然后继续安装新的APK-完整脚本将在最后发布。

  1. 您必须以读写模式重新挂载系统分区。
  2. 然后有必要允许写入/ system / app目录
  3. 完成之后,只需将apks推送到/ system / app /。 (注意末尾的圆点)
  4. 只是为了其他指南,我还删除了/ system / app / SdkSetup *(apk和odex)

瞧! Google Play已安装在模拟器上! 但这仍然行不通。 为了使其开始工作,您需要一个帐户-Google帐户。 这一步也花了我一些时间。 我的AVD基于Android 4.0.3,而不是Google API。 因此,我对其进行了更改,……仍然一无所有。

显然,在最近的发行版中,Google决定将其帐户提供商与操作系统脱钩,以便他们有一个单独的apk来配置Google帐户-称为GoogleLoginService.apk。 将其推送到模拟器可以解决所有问题-您甚至不需要Google API(可以针对Android 4.0.3选项进行设置)。 现在,当您进入Play商店时,系统会提示您输入一个帐户,该帐户可以使用!

结论

经过两天的尝试,我终于能够在带有Ice Cream Sandwitch的Android模拟器上启动和浏览Google Play商店。 ew

我用来启动模拟器的命令

emulator -avd am -partition-size 200 -no-audio -no-boot-anim
adb shell mount -o remount,rw -t yaffs2 /dev/block/mtdblock0 /system
adb shell chmod 777 /system/app
adb push GoogleLoginService.apk /system/app/.
adb push GoogleServicesFramework.apk /system/app/.
adb push Vending.apk /system/app/.
adb shell rm /system/app/SdkSetup*

只要您从具有所有必需apk的目录中运行该脚本,该脚本便会起作用。 当然,您必须正确设置PATH环境变量(这样才能实际访问所有这些命令),但是我想您已经知道了。

AVD的设置

正在使用Google Play商店