除非您更新Google Play服务(通过Bazaar),否则此应用将无法运行。

我正在为Androidtesting新的Google Maps API V2,并在应用启动时收到此消息:

MainActivity显示错误信息

这是在4.1模拟器上运行的。

这是我的AndroidManifest.xml文件:

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.maptest" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" /> <permission android:name="com.example.maptest.permission.MAPS_RECEIVE" android:protectionLevel="signature"/> <uses-permission android:name="com.example.maptest.permission.MAPS_RECEIVE"/> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <!-- Require OpenGL ES version 2 --> <uses-feature android:glEsVersion="0x00020000" android:required="true"/> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="##myapikey##"/> </application> </manifest> 

文件MainActivity.java:

 public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } } 

文件activity_main.xml

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <fragment xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" class="com.google.android.gms.maps.MapFragment"/> </RelativeLayout> 

点击“更新”使用以下堆栈跟踪崩溃应用程序:

 E/Trace(1034): error opening trace file: No such file or directory (2) W/GooglePlayServicesUtil(1034): Google Play services out of date. Requires 2010100 but found 1 W/GooglePlayServicesUtil(1034): Google Play services out of date. Requires 2010100 but found 1 W/GooglePlayServicesUtil(1034): Google Play services out of date. Requires 2010100 but found 1 W/GooglePlayServicesUtil(1034): Google Play services out of date. Requires 2010100 but found 1 W/GooglePlayServicesUtil(1034): Google Play services out of date. Requires 2010100 but found 1 W/GooglePlayServicesUtil(1034): Google Play services out of date. Requires 2010100 but found 1 D/gralloc_goldfish(1034): Emulator without GPU emulation detected. D/AndroidRuntime(1034): Shutting down VM W/dalvikvm(1034): threadid=1: thread exiting with uncaught exception (group=0x40a13300) E/AndroidRuntime(1034): FATAL EXCEPTION: main E/AndroidRuntime(1034): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=http://play.google.com/store/apps/details? \ id=com.google.android.apps.bazaar flg=0x80000 pkg=com.android.vending } E/AndroidRuntime(1034): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1545) E/AndroidRuntime(1034): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1416) E/AndroidRuntime(1034): at android.app.Activity.startActivityForResult(Activity.java:3351) E/AndroidRuntime(1034): at android.app.Activity.startActivityForResult(Activity.java:3312) E/AndroidRuntime(1034): at android.app.Activity.startActivity(Activity.java:3522) E/AndroidRuntime(1034): at android.app.Activity.startActivity(Activity.java:3490) E/AndroidRuntime(1034): at com.google.android.gms.internal.c$2.onClick(Unknown Source) E/AndroidRuntime(1034): at android.view.View.performClick(View.java:4084) E/AndroidRuntime(1034): at android.view.View$PerformClick.run(View.java:16966) E/AndroidRuntime(1034): at android.os.Handler.handleCallback(Handler.java:615) E/AndroidRuntime(1034): at android.os.Handler.dispatchMessage(Handler.java:92) E/AndroidRuntime(1034): at android.os.Looper.loop(Looper.java:137) E/AndroidRuntime(1034): at android.app.ActivityThread.main(ActivityThread.java:4745) E/AndroidRuntime(1034): at java.lang.reflect.Method.invokeNative(Native Method) E/AndroidRuntime(1034): at java.lang.reflect.Method.invoke(Method.java:511) E/AndroidRuntime(1034): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) E/AndroidRuntime(1034): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) E/AndroidRuntime(1034): at dalvik.system.NativeStart.main(Native Method) 

我也参考了Google Play Services项目。 我在这里做错了什么?

根据与 Google+上的Android开发者的讨论 ,目前在仿真器上运行新的Map API是不可能的。

(评论是昨天23:18来自Zhelyazko Atanasov,我不知道如何直接链接到它)

此外,从实际设备运行时,您看不到“ (通过Bazaar) ”部分,更新button打开Play商店。 我假设Bazaar是为了在Android模拟器上提供Google Play服务,但尚未准备好…

UPDATE

Google maps API v2现在安装在最新的Google系统映像(api:19 ARM或x86)上。
所以你的应用程序应该只适用于新的图像。 没有必要安装这些文件。

我一直试图在模拟器下运行一个Android Google Maps V2应用程序,一旦我终于运行Google Play服务,我将SDK更新到Google Play服务修订版本4,而我的模拟器将不再运行我的应用程序。

我现在已经制定了如何从我的变压器平板电脑更新我的模拟器。 (您不需要平板电脑,因为您可以下载下面的文件。)

我用titanium备份来备份我的华硕Eee Pad变压器 (TF101),然后从备份中抓取com.android.vending和com.google.android.gms APK文件。

我将这些安装在configuration了平台的仿真器上:4.1.2,API级别:16,CPU Intel / Atom x86),我的Google Maps V2应用程序再次运行。

这是所有..没有任何其他步骤/系统/应用程序需要。

我的应用程序只使用Google Maps API,毫无疑问,如果您使用其他Google Play服务,则需要执行更多步骤。

最新Google Play服务的新文件:

  • com.google.android.gms-20140218.apk

  • com.android.vending-20140218.apk

与以前相同的指令:使用任何CPU / ABI ,非Google API目标(版本10-19工作)和GPU仿真创build新仿真器,然后安装这些文件:

 adb install com.android.vending-20140218.apk adb install com.google.android.gms-20140218.apk 

如果要升级现有的模拟器,则可能需要通过以下方式卸载以前的版本:

 adb uninstall com.android.vending adb uninstall com.google.android.gms 

就这样。

我花了大约一天时间在Android模拟器上configuration新的gmaps API (Google Maps Android API v2)。 我在互联网上find的那些方法都没有为我正确地工作。 但我仍然做到了。 这里是如何:

  1. 使用以下configuration创build一个新的仿真器:

在这里输入图像说明

在其他版本中,当我安装必要的应用程序时,由于各种错误,我无法进行configuration。

2)启动模拟器并安装以下应用程序:

  • GoogleLoginService.apk
  • GoogleServicesFramework.apk
  • Phonesky.apk

你可以用下面的命令来做到这一点:

2.1) adb shell mount -o remount,rw -t yaffs2 /dev/block/mtdblock0 /system
2.2) adb shell chmod 777 /system/app
2.3-2.5) adb push Each_of_the_3_apk_files.apk /system/app/

链接下载APK文件 。 我已经从根源Android设备复制它们。

  • GoogleLoginService.apk
  • GoogleServicesFramework.apk
  • Phonesky.apk

3)在模拟器上安装Google Play服务Google地图 。 我有一个错误491,如果我从Google Play商店安装它们。 我将应用程序上传到模拟器并在本地运行安装。 (你可以使用adb来安装这个)。 链接到应用程序:

  • 谷歌地图
  • Google Play服务

4)在这些步骤之后,我成功地在模拟器上运行了一个演示示例。 这是一个截图:

谷歌地图

我第二次回答这个问题,因为我已经尝试过的解决scheme在第一次工作,现在工作,我可以重新创build步骤,使其工作:)

我也有一种感觉,因为缺乏Google Play Store是一个罪魁祸首,所以我试图通过此链接的build议将此 Google Play商店安装到模拟器中,并将此链接合并在一起。 我遇到了一些困难,但最终我成功安装了Google Play商店,并通过下载一些随机应用程序进行testing。 但是地图活动通过“更新”button不断显示消息。 那个button会把我带到商店,但在那里我会得到一个关于“找不到物品”的信息,而地图仍然不起作用。 那时我放弃了。

昨天,我意外启动了相同的testing应用程序,它的工作! 我感到非常困惑,但是很快我从模拟器的工作和新的干净的一个差异,我已经确定/ data / app /目录中的工作之一的两个应用程序:com.android.vending-1。 apk和com.google.android.gms-1.apk。 这很奇怪,因为当我按照这些网站的指示安装Google Play商店时,我正在推送Phonesky.apk,GoogleServicesFramework.apk和GoogleLoginService.apk以及另一个文件夹/系统/应用程序。

无论如何,现在Android谷歌地图API v2正在我的模拟器上工作。 这些是执行此操作的步骤:


创build一个新的模拟器

  • 对于设备 ,请select“5.1”“WVGA(480 x 800:mdpi)”
  • 对于目标 ,请select“Android 4.1.2 – API级别16”
  • 对于“CPU / ABI”,select“ARM”
  • 其余部分保持默认

这些是为我工作的设置。 我不知道不同的。


启动模拟器


通过ADB安装命令安装com.android.vending-1.apk和com.google.android.gms-1.apk


Google地图现在可以在您的模拟器中运行。

我已经创build了一个(德语)说明如何让它工作 。 您基本上需要至less具有API级别9且不包含Google API的模拟器。 然后,您必须从设备获取APK:

 adb -d pull /data/app/com.android.vending-2.apk adb -d pull /data/app/com.google.android.gms-2.apk 

并将其安装在模拟器中:

 adb -e install com.android.vending-2.apk adb -e install com.google.android.gms-2.apk 

您甚至可以运行本机Google地图应用程序,如果您有一个至less具有API级别14的模拟器,并且还需要安装com.google.android.apps.maps-1.apk

玩的开心。

我一直试图在模拟器下运行一个Android的Google Maps v2,我发现有很多方法可以做到这一点,但是没有一个适合我。 Logcat Google Play services out of date. Requires 3025100 but found 2010110中的这个警告总是Google Play services out of date. Requires 3025100 but found 2010110 Google Play services out of date. Requires 3025100 but found 2010110 ,当我想更新模拟器上的Google Play服务时,什么也没有发生。 问题是com.google.android.gms APK与我的Android SDK中的库版本不兼容。

我在模拟器上安装了这些文件“com.google.android.gms.apk”,“com.android.vending.apk”,我的应用程序Google Maps v2也能正常运行。 没有关于/系统/应用程序的其他步骤是必需的。

除非您更新Google Play服务,否则此应用将无法运行。 我已经尝试了这么长时间,但仍然没有得到地图…即使我修改了下面的评论给出的Google Play服务,也只是出现了一个空白的屏幕。


检查您的播放服务清单文件并检查APK文件com.google.android.gms的版本代码。 下面是“3136110”。 下载这些APK文件并从DOS提示符安装,但在安装之前运行您的目标模拟器。

 package="com.google.android.gms" android:versionCode="3136110" android:versionName="3.1.36 (673201-10) 

我从这个链接得到这些APK文件。

我通过执行以下步骤解决了这些问题:

  • 在模拟器中:

    您必须使用最新的API Google APIs(Google Inc.)-API Level 19

    把其余的东西放在截图中。

    在这里输入图像描述

  • API密钥:

    创build新的API密钥并仔细检查Google Map API密钥和SHA密钥。

  • Google Play服务:

    你必须下载最新的Google Play服务com.android.vending-4.8.20.apk 。如果谷歌播放服务不工作,在那个网站上,你可以在互联网上find很多网站com.android.vending 4.8.20.apk

    您可以使用命令提示符adb install com.android.vending 4.8.20.apk来运行Google Play服务。

    注意:您必须下载最新的Google Play服务,因为逐年最新版本将会在互联网上更新。

    输出

    在这里输入图像描述

在更新到ADT 22.0.1之后,由于Android私有库,Google地图服务发生了一些错误,应用程序崩溃。 所以我终于find了解决scheme,并为我工作。

只需安装Google Play服务库,然后从https://www.dropbox.com/sh/2ok76ep7lmav0qf/9XVlv61D2b转到google-play-service/libproject/google-play-services_lib 。 导入到您的工作区。 清理你想要使用gogole-play-services-lib的项目,然后重新编译并进入Project- > Properties- > Java BuildPath – >select“Android Private Libraries,Android Dependencies,google-play-service”

在属性本身,去Android,然后select任何版本,然后select添加并select谷歌播放服务的lib,然后按下应用,最后确定。

最后,进入项目 – > Android工具 – > Android支持库。 接受许可证,安装后运行你的项目。

它会正常工作。

我find了一个很好的解决scheme,可以让您在模拟器中testing您的应用程序,而且不需要您恢复到旧版本的库。 查看堆栈溢出问题的答案在Android模拟器上运行Google Maps v2

从Android SDK Manager安装:附加function:Google Play服务

  just change it to compile 'com.google.android.gms:play-services-maps:9.6.0' compile 'com.google.android.gms:play-services-location:9.6.0' 

这对我来说目前的版本是10.0.1