好的,所以我知道有很多关于这个问题的问题,但它似乎对我不起作用。无论如何,这里是:
我的应用使用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指纹可能不匹配,如果有,为什么一切都没有正确更新?如果有人能帮助我,我将不胜感激。
答案 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
}
}