【问题标题】:Running Google Maps v2 on the Android emulator在 Android 模拟器上运行 Google Maps v2
【发布时间】:2012-12-11 23:42:31
【问题描述】:

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

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

【问题讨论】:

标签: android android-emulator avd android-maps-v2 google-play-services


【解决方案1】:

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

【讨论】:

  • 一些用户创建了一个支持它的模拟器! stackoverflow.com/questions/13691943/…
  • 是的,它可以工作...但确实需要将单独的 APK 安装到模拟器映像中。
  • 在安卓模拟器上工作需要额外的工作。这是可能的!
  • 是的,你可以做一些努力
  • 您需要在此处为​​您的应用创建一个 Google 服务 API 密钥:console.developers.google.com/apis 然后将此密钥添加到您项目中的 google_maps_api.xml 文件中
【解决方案2】:

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

在 Android SDK Tools 22.0.1 上使用此配置进行测试。另一种针对纯 Android 而不是 Google 的配置也应该可以工作。

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

...

  1. 打开 AVD
  2. 在终端/cmd中执行这个

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

  4. 玩得开心编码!!!

我发现这种方法最简单、最干净,并且可以与最新版本的软件一起使用,从而可以修复所有错误。

【讨论】:

  • 我发现选择包含 Google API 的模拟器图像不起作用。尝试安装上述 apk 时,adb 报告“失败:已安装”。运行应用程序时,地图只是返回灰色。选择没有 Google API 的模拟器并手动安装 APK 时,一切正常。
  • 是的,您应该选择没有 Google API 的图像。正如我已经在第二段“其他针对纯 Android 而不是谷歌应该适用的配置”中指出的那样。
  • @PalmRobotZ 是否可以在 Android 2.2 模拟器上显示 GoogleAndroidMapsV2
  • 如果我不将 Google Api 用于模拟器图像,那么在安装我的应用程序时,我会收到此错误“INSTALL_FAILED_MISSING_SHARED_LIBRARY”。遇到这种情况怎么办?
  • 失败 [INSTALL_FAILED_UPDATE_INCOMPATIBLE]
【解决方案3】:

请尝试以下操作。 It was successfully for me.

步骤:

  1. 使用以下配置创建一个新模拟器:

  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 商店,v.3.5.16
    4. Google Maps,v.6.14.1
    5. Google Play services,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. this link 下载 Google Play 服务修订版 4,并将其额外下载到文件夹 sdkmanager->extra->google play service
  5. androidsdk\extras\google\google_play_services 导入google-play-services_lib
  6. 新建一个项目,将上述项目作为库项目引用。
  7. 运行项目。

【讨论】:

  • 我在模拟器上使用 Android 4.4.2 并启用了硬件加速,只需安装 com.google.android.gms-2.apk、com.google.android.apps.maps-1.apk 和Phonesky.apk,使用 adb 和这个我在模拟器上工作的谷歌地图......顺便说一句,这些 apk 可以从上面的答案下载......
【解决方案4】:

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

【讨论】:

    【解决方案5】:

    我建议使用emulator by Genymotion 而不是 Google 的模拟器。它的启动速度更快,几乎实时响应。它还支持 Google Play 服务,因此也支持 Google 地图。

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

    【讨论】:

    • Genymotion 现已停止 google play 服务。
    • @RishabhSrivastava 您必须自己安装 GoogleApps。请阅读thisthis posts
    【解决方案6】:

    我可以让我的模拟器使用 Google Map V.2(使用 Google Play Service V.4)运行我的应用程序。我遵循了其他人建议的一些失败的步骤,但是我从中吸取了教训并以某种方式使其发挥作用。方法如下:

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

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

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

    4. 将以下 APK(2013 年 4 月 2 日通过 Dropbox 提供)下载到您的本地目录(扫描病毒!):

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

      DOS/控制台提示> adb -e install [path-to-APK-file]

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

    6. 在这里,事情可能会变得棘手。您认为您已经完成了,但是当您再次使用 Map 打开您的应用程序时,您得到的只是一个错误信息,格式如下:“Google Play 服务已过期。需要 2012100 但找到 2010110”,并且可能会看到一个按钮“更新” Google Play。如果是这种情况,请不要尝试单击更新按钮,因为它不会做任何事情。我也遇到了这个错误,我通过这两个额外的步骤解决了它:

      • 清理-重建-将我的应用重新安装到模拟器中
      • 关闭我的模拟器并重新启动它。
    7. 就是这样,它现在运行良好。

    【讨论】:

      【解决方案7】:

      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),则无需解决任何问题。它只是工作!

      【讨论】:

      • 这是真的。此外,API 19 也适用于我。
      【解决方案8】:

      我已在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 文件 - 您将创建一个系统目录
      • 获取 AndroVM 的管理 IP 地址(“AndroVM 配置”工具)并执行“adb connect x.y.z.t”
      • 做“adb root”
      • 使用“adn connect x.y.z.t”重新连接
      • 执行“adb remount”
      • 做“adb push system/ /system/”

      您的虚拟机将重新启动,您应该拥有包括 Market/Play 在内的谷歌应用程序。

      您不会拥有某些 Google Apps,例如 Google 地图,但可以下载它们 来自市场/游戏。

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

      使用虚拟机而不是模拟器的一些重要副作用:

      • 非常优越的综合性能
      • OpenGL 加速
      • Google Play 支持

      到目前为止,唯一的障碍是缺乏多点触控手势,这对于地图应用来说是个遗憾!我打算用一个隐藏的 UI 机制来解决这个问题,所以这不是一个大问题。

      【讨论】:

      • 关于不能两指轻按缩小的问题,您可以使用轻按上下滑动来放大和缩小,单指(即鼠标)即可。
      【解决方案9】:

      您需要在具有 Google API 版本的模拟器上进行尝试。每个平台都有两个版本,Android 和 Android+Google API。确保在创建 AVD 时,在目标字段中选择 Google API 版本。

      页面 Ensure Devices Have the Google Play services APK 也很有帮助。

      【讨论】:

      • 谢谢,但在选择“Android+Goodle API's”后,我可以看到另一条消息:img255.imageshack.us/img255/6353/przechwytywaniera.png >
      • 我认为这是一个错误,因为模拟器上从未安装过google play,而且google play通常会更新google play services apk,您可以从设备复制google play services apk并安装它在模拟器上
      • 一些用户创建了一个支持它的模拟器! stackoverflow.com/questions/13691943/…
      【解决方案10】:

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

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

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

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

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

      【讨论】:

      • 你从哪里得到apk文件的?
      • 对不起....已经有一段时间了,所以我不记得我从哪里得到这些文件,但我很确定我只是用谷歌搜索它们并在网上找到它们。
      【解决方案11】:

      我已经在an answer to Stack Overflow question Trouble using Google sign-in button in emulator回复了这个问题。它仅适用于 Android 4.2.2,但允许您在 AVD 中使用“Intel Atom (x86)”。

      我认为让它适用于其他版本的 Android 很容易。只需找到正确的文件即可。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-08-29
        • 1970-01-01
        • 1970-01-01
        • 2017-12-06
        • 2021-12-07
        • 1970-01-01
        相关资源
        最近更新 更多