1

好吧,所以我知道有很多關於這個主題的問題,但它似乎仍然不適合我。無論如何,這裏有:谷歌地圖Android API v2 - 發佈密鑰

我的應用使用Google地圖片段。爲了顯示地圖,我從Google獲得了調試證書,並將其放入我的Android Manifest中。一切都很完美。

現在,我準備在Play商店發佈我的應用。所以,我生成了一個簽名的APK,在這個過程中創建了我的密鑰庫。我還必須更改我的應用程序包名稱,因爲Google不接受包名稱與com.example.appname。

所以,現在我需要從Google獲得另一個版本證書,才能發佈我的應用,對嗎?所以我按照這裏的說明進行操作:https://developers.google.com/maps/documentation/android/start

我從我的密鑰庫(這與我的調試證書中使用的調試SHA1指紋不同)中獲得SHA1指紋,並將其插入Google Developer中的憑據使用我的更新軟件包名稱的控制檯獲取釋放密鑰。然後,我替換成新的版本密鑰我以前的調試關鍵,並重建我的項目,但我從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清單的一部分,我也有所有必要的許可,以及:

<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

你是從Android Studio中運行,或者是你運行簽署APK?此外,確保在從調試切換到發佈時卸載應用程序,然後發佈到調試。 –

+0

@DanielNugent我從Android Studio運行,但運行APK也不起作用。我已經嘗試卸載它並再次安裝它... – Nisarg

+1

將您的調試sha1添加到您的新api密鑰以便從Android Studio運行!此外,您是否使用新的API密鑰重建了您的已簽名apk? –

回答

0

您需要將signingConfigs添加到您的build.gradle(Module:app)文件中。

這是我的文件中包含 -

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