谷歌地图未出现在我的MapActivity中

3

我使用Eclipse IDE创建了一个发布密钥库。我使用keytool签名并在Google Maps上注册。我插入了密钥,但我的地图没有显示出来。

Maps show up properly when I use the key associated with my debug keystore.

我该如何诊断这个问题?我按照发布版本的步骤进行了与调试相同的操作。
更新:
这是我的清单文件:
      <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.android.cancertrials" android:versionCode="1"
    android:versionName="1.0">
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.CALL_PHONE"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">
        <activity android:label="@string/app_name" android:name="splash">

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".HomeActivity" android:label="@string/app_name" android:windowSoftInputMode="stateHidden">
        </activity>
        <activity android:name=".moreactivity" android:label="@string/app_name">
        </activity>
        <activity android:name=".aboutmedtrust" android:label="@string/app_name">
        </activity>
        <activity android:name=".aboutclinical" android:label="@string/app_name">
        </activity>
        <activity android:name=".aboutglaxosmith" android:label="@string/app_name">
        </activity>
        <activity android:name=".termsofuse" android:label="@string/app_name">
        </activity>
        <activity android:name=".privacy" android:label="@string/app_name">
        </activity>
        <activity android:name=".feedback" android:label="@string/app_name">
        </activity>
        <activity android:name=".informationcancer" android:label="@string/app_name">
        </activity>
        <activity android:name="AdvanceSearchActivity" android:label="@string/app_name">
        </activity>
        <activity android:name="SearchingActivity"></activity>
        <activity android:name="AdvanceSearchTab1"></activity>
        <activity android:name="AdvanceSearchTab2"></activity>
        <activity android:name="DetailedActivity"></activity>
        <activity android:name="summary"></activity>
        <activity android:name="conditions"></activity>
        <activity android:name="description"></activity>
        <activity android:name="inclusion"></activity>
        <activity android:name="exclusion"></activity>
        <activity android:name="BookmarkActivity"></activity>
        <activity android:name="RecentActivity"></activity>
        <activity android:name="information"></activity>
    <uses-library android:name="com.google.android.maps"></uses-library>
    <activity android:name="Mapsactivity">
    </activity>
    <activity android:name="mapView"></activity>

</application>
    <uses-sdk android:minSdkVersion="3" />

</manifest> 

你有太多的活动。你还设置了两次uses-library,其中一个在activity内部。我很惊讶甚至可以编译。 - Falmarri
你在代码里面有两个 ACCESS_FINE_LOCATION,最好把其中一个删掉。 - Jimmy
也可以尝试在运行Google APIs目标的模拟器上运行它(使用AVD Manager下载额外的目标)。 - Jimmy
请查看更新后的Manifest.xml文件。我删除了重复的ACCESS_FINE_LOCATION和uses-library。但是地图仍然无法显示... - Sheehan Alam
3个回答

2

你是否添加了网络权限?这个问题几乎每天都会被问到。


1
是的,已经添加了。请查看我的清单文件。有趣的是,当我使用调试密钥库的密钥时,地图会出现。只有当我使用发布密钥库时,地图才不会出现... - Sheehan Alam

0

所以我昨天遇到了这个问题,我通过手动签名.apk文件来解决它。

我假设您正在使用私有密钥库,并已在地图视图(和其他必要的资源)中输入了发布地图密钥。

为此,您可以从Eclipse的项目资源管理器中选择您的项目(右键单击)-> Android工具 -> 导出未签名包。将其保存在任何您喜欢的位置。

打开终端(我在Windows 7机器上),进入您的jdk文件夹(而不是jre),进一步进入bin\。

使用以下命令:(请注意,如果您键入路径,则需要“”)

        jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore "path-to-your-keystore" "path-to-your-apk" <apk alias> -certs 

为了验证签名过程,请执行以下操作:

jarsigner -verify "path-to-recently-signed-apk" -verbose 

如果您愿意,可以省略冗长选项。它将(希望)显示jar已验证(最终会警告您有没有经过验证的证书链的条目,但在我的情况下并不重要)

然后运行zipalign:

zipalign -v 4 "path-to-signed-apk" "path-to-signed-and-aligned.apk"

请注意,它将创建一个新的apk,该apk符合谷歌的标准。
安装该apk后,您的地图应该正常显示!

From: http://developer.android.com/tools/publishing/app-signing.html#ExportWizard


0

当您的指纹发生变化时,签署发布密钥存储库时必须获取单独的API密钥。

确保还安装了使用正确密钥签名的.apk文件。

更新:我的意思是您确定使用正确的密钥签署了APK吗?这意味着您在生成APK时是否使用发布密钥存储库进行签名?

在导出时,您是否真正选择了用于签名的密钥库?


我确实获得了与发布密钥库相关联的单独API密钥。但是那个密钥不起作用。当我将其与我的调试密钥库交换回来时,一切都恢复正常了。 - Sheehan Alam
@Sheehan Alam:我更新了我的答案。 - Octavian Helm
是的,我已经使用正确的发布密钥库导出了我的APK。我将APK发送给我的测试人员,但他无法获取地图。我该如何通过Eclipse运行发布APK?我有一种感觉是Eclipse正在运行我的调试APK,但是使用了发布密钥... - Sheehan Alam
有趣。当我选择我的发布密钥库时,它告诉我:“密钥库已被篡改或密码不正确”。 - Sheehan Alam

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