Google Maps Android API v2 - 发行密钥

时间:2015-05-28 17:43:20

标签: android google-maps android-studio google-maps-android-api-2 android-keystore

好的,所以我知道有很多关于这个问题的问题,但它似乎对我不起作用。无论如何,这里是:

我的应用使用Google地图片段。为了显示地图,我从Google获得了一个调试证书并将其放入我的Android Manifest中。一切都很完美。

现在,我已准备好在Play商店发布我的应用。所以,我生成了一个签名的APK,在此过程中创建了我的密钥库。我还必须更改我的应用程序包名称,因为Google不接受带有com.example.appname的包名称。

现在,我需要从Google获取另一张地图发布证书才能发布我的应用,对吧?所以我按照这里的说明进行了操作:https://developers.google.com/maps/documentation/android/start

我从我的密钥库中获取了SHA1指纹(这与我用于调试证书的调试SHA1指纹不同),并使用我更新的软件包名称将其插入Google Developer Console中的凭据以获取发布密钥。然后,我用新的发布密钥替换了我以前的调试密钥,并重建了我的项目,但是我从Logcat得到以下错误:

Authorization failure.  Please see https://developers.google.com/maps/documentation/android/start for how to correctly set up the map.
In the Google Developer Console (https://console.developers.google.com)
Ensure that the "Google Maps Android API v2" is enabled.
Ensure that the following Android Key exists:

现在,它显示了我刚刚插入清单的新版本密钥,但它显示了我的旧调试SHA1指纹,而不是我的密钥库中的指纹,因此地图永远不会显示,并且只有灰色屏幕它的位置。这是我的Android Manifest的一部分,我也拥有所有必需的权限:

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

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_myicon"
    android:label="MyApp"
    android:theme="@style/AppTheme" >

    <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="(My release key)" />

    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />

这是我的build.grade文件:

    apply plugin: 'com.android.application'

    android {
      compileSdkVersion 21
      buildToolsVersion "21.1.1"

    defaultConfig {
        applicationId "(my package name)"
        minSdkVersion 14
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }


    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile 'com.google.android.gms:play-services:6.5.87'
}

新版本密钥和旧版调试SHA1指纹可能不匹配,如果有,为什么一切都没有正确更新?如果有人能帮助我,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

您需要将 signingConfigs 添加到 build.gradle(模块:应用)文件中。

这是我的文件包含的内容 -

android {
compileSdkVersion 21
buildToolsVersion '21.0.1'

defaultConfig {
    applicationId "com.example"
    minSdkVersion 16
    targetSdkVersion 21
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
signingConfigs {
    release {
        storeFile file('Path\\YourReleaseKey.jks')
        storePassword 'password'
        keyAlias 'YourAlias'
        keyPassword 'password'
    }
}
buildTypes {
    release {
        signingConfig signingConfigs.release
    }
}