Google Maps API V2无法在模拟器中使用

时间:2013-03-02 08:50:35

标签: android google-maps

我正在使用Android中的Googl Maps API v2。

MapExample.java代码

 public class MapExample extends FragmentActivity {  
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);             
}

main.xml代码

<fragment
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    class="com.google.android.gms.maps.SupportMapFragment" />

清单文件代码

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />

<uses-feature android:glEsVersion="0x00020000" 
                android:required="true" />

<permission
    android:name="com.example.android.mapexample.permission.MAPS_RECEIVE"
    android:protectionLevel="signature"/>

                                                                                                                                                                                                                                                                         <uses_permission                                                                                 android:name="com.example.android.mapexample.permission.MAPS_RECEIVE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission  android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />    
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />




<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

    <meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="My API_KEY"/>

    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>


</application>

我在模拟器中运行此代码它在模拟器中显示一条消息并在LogCat中显示警告

消息:您的某些应用程序所依赖的Google Play服务不受您的设备支持。请通过ok按钮与制造商联系以获取帮助。    警告:Google Play签名无效。

点击该按钮时出现错误

03-02 13:17:30.746: D/AndroidRuntime(905): Shutting down VM
03-02 13:17:30.746: W/dalvikvm(905): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
03-02 13:17:30.776: E/AndroidRuntime(905): FATAL EXCEPTION: main
03-02 13:17:30.776: E/AndroidRuntime(905): java.lang.NullPointerException
03-02 13:17:30.776: E/AndroidRuntime(905):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1409)
03-02 13:17:30.776: E/AndroidRuntime(905):  at android.app.Activity.startActivityForResult(Activity.java:3351)
03-02 13:17:30.776: E/AndroidRuntime(905):  at android.app.Activity.startActivityForResult(Activity.java:3312)
03-02 13:17:30.776: E/AndroidRuntime(905):  at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:817)
03-02 13:17:30.776: E/AndroidRuntime(905):  at android.app.Activity.startActivity(Activity.java:3522)
03-02 13:17:30.776: E/AndroidRuntime(905):  at android.app.Activity.startActivity(Activity.java:3490)
03-02 13:17:30.776: E/AndroidRuntime(905):  at com.google.android.gms.internal.e$2.onClick(Unknown Source)
03-02 13:17:30.776: E/AndroidRuntime(905):  at android.view.View.performClick(View.java:4084)
03-02 13:17:30.776: E/AndroidRuntime(905):  at android.view.View$PerformClick.run(View.java:16966)
03-02 13:17:30.776: E/AndroidRuntime(905):  at android.os.Handler.handleCallback(Handler.java:615)
03-02 13:17:30.776: E/AndroidRuntime(905):  at android.os.Handler.dispatchMessage(Handler.java:92)
03-02 13:17:30.776: E/AndroidRuntime(905):  at android.os.Looper.loop(Looper.java:137)
03-02 13:17:30.776: E/AndroidRuntime(905):  at android.app.ActivityThread.main(ActivityThread.java:4745)
03-02 13:17:30.776: E/AndroidRuntime(905):  at java.lang.reflect.Method.invokeNative(Native Method)
03-02 13:17:30.776: E/AndroidRuntime(905):  at java.lang.reflect.Method.invoke(Method.java:511)
03-02 13:17:30.776: E/AndroidRuntime(905):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
03-02 13:17:30.776: E/AndroidRuntime(905):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-02 13:17:30.776: E/AndroidRuntime(905):  at dalvik.system.NativeStart.main(Native Method)

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:3)

在关于堆栈溢出的帖子之一上,我偶然发现了一个包含2个文件的文件集:

<强> com.android.vending.apk

<强> com.google.android.gms.apk

这是我为自己保存的链接:

http://www.filedropper.com/comandroidvending-1

http://www.filedropper.com/comgoogleandroidgms-1

或:

https://www.dropbox.com/s/u3blse4z3l2et96/com.google.android.gms-6413100ccfca460007fdc988b1363db8.apk

https://www.dropbox.com/s/8jiban3pq2cgkvo/com.android.vending-108b71f4793186b8fd1768a9cd19bbd5.apk

尝试我不记得哪一个有效,但肯定有。

您应该做的是创建具有以下属性的AVD:

enter image description here

启动它,当它完成启动后,打开命令提示符并前往该文件夹 如果找到这两个文件并使用install命令将它们安装到avd,

示例:

c:\ Users \ Downloads \ adb install com.android.vending.apk

安装完两个文件并收到成功按钮后,重启 模拟器并尝试在此AVD中运行您的地图应用程序,它现在应该可以正常工作。

<强>更新

这是我使用的文件,并且在我的两个工作站上使用屏幕截图中显示的配置,请尝试它们并告诉我您的想法。

http://www.mediafire.com/download.php?pxpjfkveemq29qk

http://www.mediafire.com/download.php?zn8wna5wf4ek5le

答案 1 :(得分:1)

正如错误消息所示,您需要Google Play服务,该服务在模拟器上(以及没有Google Play商店的设备上也无法使用 - 例如Amazon Kindle)。您必须test on a phone,但有一些hacks as well

答案 2 :(得分:0)

根据Android官方文档,你无法在你的模拟器上测试谷歌地图v2,你需要一个安装了google play的安卓设备......

答案 3 :(得分:0)

我已经创建了一个(德语)描述如何让它工作:

http://linuxchef.blogspot.de/2013/05/google-maps-api-v2-im-android-emulator.html

您基本上需要一个至少具有API级别9且没有Google API的模拟器。然后你必须从root设备上获取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

如果您的模拟器至少具有API级别14并且另外安装了com.google.android.apps.maps-1.apk

,您甚至可以运行原生Google地图应用

玩得开心。