在Android模拟器上运行Google Maps v2

我试图在我的Android应用程序中实现Google Maps v2,但不幸的是,我没有看到地图,而是收到了以下消息:

如果您的手机中缺少Google Play服务,此应用将无法运行。

是否有可能在Android模拟器(平台4.2)上运行这些地图?

目前,参考Google Android Map API v2,您无法在Android模拟器上运行Google Maps v2; 你必须使用一个设备进行testing。

对于已更新到最新版本的google-play-services_lib和/或Google Play services out of date. Requires 3136100 but found 2012110出现此错误Google Play services out of date. Requires 3136100 but found 2012110 Google Play services out of date. Requires 3136100 but found 2012110这个新版本的com.google.android.gms.apk(Google Play服务3.1.36)和com.android.vending.apk(Google Play Store 4.1.6)应该可以工作。

在Android SDK Tools 22.0.1上testing这个configuration。 针对纯Android的另一个configuration,而不是Google的configuration也应该起作用。

  • 设备: Galaxy Nexus
  • 目标: Android 4.2.2 – API等级17
  • CPU / ABI: ARM(armeabi-v7a)
  • 选中:使用主机GPU

  1. 打开AVD
  2. 在terminal/ cmd中执行此操作

     adb -e install com.google.android.gms.apk adb -e install com.android.vending.apk 
  3. 重新启动AVD

  4. 玩得开心编码!

我发现这种方法是最简单,最干净的,它可以与最新版本的软件一起工作,它可以让你得到所有的错误修复。

请尝试以下。 它对我成功了 。

脚步:

  1. 用这个configuration创build一个新的模拟器: AVD配置

  2. 启动模拟器并安装以下APK文件: GoogleLoginService.apkGoogleServicesFramework.apkPhonesky.apk 。 你可以用下面的命令来做到这一点:

     adb shell mount -o remount,yourAvdName -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 Phonesky.apk /system/app/ 

    APK的链接:

    1. GoogleLoginService.apk
    2. GoogleServicesFramework.apk
    3. Phonesky.apk AKA Google Play Store,v.3.5.16
    4. Google Maps ,v.6.14.1
    5. Google Play服务 ,v.2.0.10
  3. 在模拟器中安装Google Play服务和Google地图

     adb install com.google.android.apps.maps-1.apk adb install com.google.android.gms-2.apk 
  4. 从此链接下载Google Play服务修订版本4, 然后再下载到sdkmanager->extra->google play service文件夹。
  5. androidsdk\extras\google\google_play_services导入google-play-services_lib
  6. 创build一个新项目并将上述项目作为库项目引用。
  7. 运行该项目。

我已经使用本指南在模拟器上成功安装了Google Maps v2。
您应该执行以下步骤:

  • 创build一个新的模拟器Nexus S,Android 2.3.3。 不要使用Google API。
  • 安装com.android.vending.apk (Google Play Store,v.3.10.9)
  • 安装com.google.android.gms.apk (Google Play Service,v.2.0.12)

我build议使用Genymotion的模拟器代替Google的模拟器。 它启动速度更快,几乎可以实时响应。 它还支持Google Play服务,因此也支持Google地图。

Google地图Genymotion

试一试! 这是一个博客文章,可以帮助您设置模拟器。

  • 如何在Linux上为Android设置快速模拟器?

我可以让我的模拟器使用Google Map V.2(使用Google Play服务V.4)来运行我的应用程序。 我遵循其他人build议的一些失败的步骤,但是我从中学到了什么,并以某种方式使其工作。 这是如何:

  1. 首先:你必须编码你的地图应用程序。 正确地使用您的图元文件XML中所有适当的权限设置,并让Google Play Services APK成为您的应用程序的一部分。 要validation这是真的,你必须在REAL设备上运行你的应用程序,并知道它在那里的地图。 然后你可以继续处理你的模拟器,如下所示。

  2. 创build一个新的模拟器,或使用您的现有模拟器的规格:

    • 目标名称= Android 4.1.2
    • API级别= 16
    • CPU =任何。 但是,我发现ARM比x86快得多
    • 有足够的RAM内存和空间MB
  3. 运行你的模拟器(你的目标模拟器必须运行!)

  4. 将下列APK(通过每4/2/2013的Dropbox提供)下载到本地目录(扫描病毒!):

    • com.android.vending.apk ,(Google Play Store,v.3.10.9)

    • com.google.android.gms.apk (Google Play Service,v.2.0.12)

  5. 使用ADB命令将这两个APK安装到正在运行的(目标)仿真器中:

    DOS /控制台提示> adb -e install [path到APK文件]

    注意:可能的情况是,在试用错误期间,您的模拟器中安装了这些APK,并且由于某种原因需要重新安装。 您必须首先卸载它们:adb -e uninstall(com.google.android.gms或com.android.vending)

  6. 在这里,事情会变得棘手。 你认为你已经完成了,但是当你再次用Map打开你的应用程序,但是你得到的只是一个错误,forms如下:“Google Play服务过期了,需要2012100但是find了2010110”,并且可能会看到一个button以“更新”Google Play。 如果是这种情况,不要试图点击更新button,因为它不会做任何事情。 我也得到了这个错误,我通过这两个额外的步骤解决了它:

    • 清理重build – 将我的应用程序重新安装到模拟器中
    • closures我的模拟器并重新启动它。
  7. 就是这样,它现在很好用。

我已经在AndroVM虚拟机上成功运行了需要Google Maps API 2的应用程序。

AndroVM并未安装Google地图或Google Play,而是提供Cyanogen Gapps存档的修改副本,这是一套安装在大多数Android设备上的专有Google应用程序。

从AndroVM常见问题解答中复制的说明:

我如何安装Google Apps(包括Market / Play应用程序)?

  • 下载Google Apps: gapps-jb-20121011-androvm.tgz [基本上来自Cyanogen gapps归档的/ system目录,没有在AndroVM上崩溃的GoogleTTS应用程序]
  • 解开主机上的gapps … tgz文件 – 您将创build一个系统目录
  • 获取您的AndroVM(“AndroVMconfiguration”工具)的pipe理IP地址,然后执行“adb connect xyzt”
  • 做“adb根”
  • 用“adn connect xyzt”重新连接
  • 做“adb remount”
  • 做“adb push system / / system /”

您的虚拟机将重新启动,你应该有谷歌应用程序,包括市场/播放。

您将不会拥有Google地图等Google Apps,但可以从Market / Play下载。

因此,请按照这些说明操作,然后使用Google Play安装Google地图!

使用虚拟机而不是模拟器会带来一些很好的副作用:

  • 非常优越的一般性能
  • OpenGL加速
  • Google Play支持

到目前为止,唯一的一个颠簸是缺乏多点触摸手势,这是一个地图应用程序的一个无业游民! 我打算用隐藏的UI机制来解决这个问题,所以不是这么大的问题。

您需要尝试使用Google API版本的模拟器。 每个平台都有两个版本,Android和Android + Google API。 确保在创buildAVD时,在目标字段上selectGoogle API版本。

而页面确保设备使用Google Play服务APK也可以提供帮助。

Google已经更新了针对API 23的虚拟设备。它现在随Google Play Services 9.0.80一起提供。 因此,如果您使用的是Google Maps API V 2.0(我正在使用play-services-maps:9.0.0和play-services-location.9.0.0),则不需要解决方法。 它只是工作!

我尝试了上面的步骤(通过paniniluncher),但收到以下消息:

 Google Play services out of date. Requires 3025100 but found 2012110 

我收到了这条消息,因为我需要上述文件的不同版本。 为了解决这个问题,我首先卸载了上面引用的文件,下载了我需要的版本(如下面的StackOverflow所示:

Google Play服务已过期。 需要3025100,但find2012110

然后使用`adb -e install [path-to-APK-file]安装这些文件,然后重新启动模拟器,并完美运行!

我已经回答了这个问题,在堆栈溢出问题的答案在模拟器中使用Googleloginbutton时遇到问题 。 它只适用于Android 4.2.2,但可让您在AVD中使用“Intel Atom(x86)”。

我认为,使其适用于其他版本的Android很容易。 只要find正确的文件。