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> 
4

3 回答 3

2

您是否添加了互联网权限?这个问题每天都会被问到。

于 2010-11-24T05:49:44.273 回答
0

当您的指纹发生变化时,您必须在使用发布密钥存储进行签名时获取单独的 API 密钥。

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

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

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

于 2010-11-25T18:15:15.673 回答
0

所以我昨天自己遇到了这个问题,我通过手动签署 .apk 解决了这个问题

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

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

打开你的终端(我在 Windows 7 机器上), cd 进入你的 jdk 文件夹(不是 jre), cd 进一步进入 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"

请注意,它将创建一个符合 google 标准的新 apk。

安装该apk,您的地图应该可以正常显示!

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

于 2012-11-29T12:38:53.513 回答