谷歌地图V2在安卓2.2上显示空白屏幕

11
我尝试按照 Android Maps V2 快速入门的教程操作,但是运行应用程序后只显示了一个空白地图屏幕。我的手机使用的是安卓2.2.1版本。

图片描述

这是在Logcat中显示的内容:

12-07 18:07:52.479: W/dalvikvm(1654): VFY: unable to resolve instance field 24
12-07 18:07:53.129: W/dalvikvm(1654): Unable to resolve superclass of Lmaps/a/du; (411)
12-07 18:07:53.129: W/dalvikvm(1654): Link of class 'Lmaps/a/du;' failed
12-07 18:07:53.139: W/dalvikvm(1654): Unable to resolve superclass of Lmaps/a/ej; (2363)
12-07 18:07:53.139: W/dalvikvm(1654): Link of class 'Lmaps/a/ej;' failed
12-07 18:07:53.139: W/dalvikvm(1654): Unable to resolve superclass of Lmaps/j/k; (2379)
12-07 18:07:53.139: W/dalvikvm(1654): Link of class 'Lmaps/j/k;' failed
12-07 18:07:53.149: E/dalvikvm(1654): Could not find class 'maps.j.k', referenced from method maps.y.ae.a
12-07 18:07:53.149: W/dalvikvm(1654): VFY: unable to resolve new-instance 3571 (Lmaps/j/k;) in Lmaps/y/ae;
12-07 18:07:53.389: W/dalvikvm(1654): VFY: unable to resolve direct method 14965: Ljava/io/IOException;.<init> (Ljava/lang/String;Ljava/lang/Throwable;)V

编辑:这是manifest.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.eunice.mapstry"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
    <uses-feature android:glEsVersion="0x00020000" android:required="true"/>
    <permission android:name="com.eunice.mapstry.permission.MAPS_RECEIVE"
                android:protectionLevel="signature"/>
    <uses-permission android:name="com.eunice.mapstry.permission.MAPS_RECEIVE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <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" >
        <uses-library android:name="com.google.android.maps" />

        <activity
            android:name="com.eunice.mapstry.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>

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

</manifest>

编辑:我已经添加了我的Google API控制台的图像:

在此输入图像描述


你是否已经添加了自己创建的 API 密钥? - Graham Smith
是的,我有。我首先使用调试密钥库创建了一个。当那个不起作用时,我创建了一个不同的密钥库,并使用它创建了一个API密钥,但仍然无法正常工作。 - euniceadu
地图视图存在,所以我知道阻止地图出现的唯一两件事是错误的密钥或您没有在清单中添加访问互联网的权限。 - Graham Smith
@GrahamSmith 我刚刚添加了 manifest.xml。我已经添加了所有必要的权限和一个有效的 API 密钥。 - euniceadu
我遇到了同样的问题,但是我无法解决它。你能帮我吗? - Akhil
@Akhil,我的问题是因为我使用了错误的密钥库。你确定你正在使用正确的密钥库吗? - euniceadu
5个回答

7

我终于找到了问题所在。我选择了错误的调试密钥库。我正在使用一台Ubuntu机器。因为我以root用户身份打开了Eclipse,所以Eclipse中的默认密钥库位于我的根文件夹(/root/.android/.android/debug.keystore),而我正在使用我的用户文件夹中的调试密钥库创建API密钥。现在我已经用根文件夹中的调试密钥库创建了一个新的API密钥,它现在可以正常工作了。


2

我已经做过了。我刚刚编辑了我的问题,包括了我的Google API控制台的图片。 - euniceadu

1

我也折腾了很久,包括证书、包名、API控制台等等,一直没有成功。直到我尝试在设备上卸载应用程序,然后重新安装它,突然就好了。


1

我曾经遇到过同样的问题,但是通过以下方法解决了。如果以上答案对你没用,这个方法可能会有帮助。当我改变我的应用程序包名后,地图开始无法显示。(这是在我改变包名之后发生的

  1. 删除你之前用于旧包名的密钥库文件。
  2. 创建一个新的密钥库文件。
  3. 获取SHA1指纹。
  4. 进入API控制台。
  5. 创建一个新的Android应用程序。
  6. 粘贴你的指纹。
  7. 在你的清单文件中使用给定的API密钥。

这对我起作用了。


0

我曾经遇到过同样的问题,解决方法是删除debug.keystore。然后我执行了以下命令:

adb uninstall com.example.myapp

接着清理并重新运行应用程序。

我认为问题出在我在清单文件中复制粘贴了一个虚拟API密钥,并且最初使用它部署了应用程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接