7

我試圖發佈我的應用,但遇到了Google地圖的問題。 該應用程序包含一個顯示地圖的活動(MapActivity)。在調試模式下運行時,地圖工作正常。 我以發佈模式簽署了我的應用程序,並獲得了SHA1。 我根據需要在Google控制檯上創建了一個新的android密鑰(SHA1; packageName)。瞭解API密鑰Google地圖在發佈模式下未在android上顯示

在我的應用程序中,我根據需要引用了google-play-services-lib的副本。 我正在使用ADT。

map.xml

<?xml version="1.0" encoding="utf-8"?> 
<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/map" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:name="com.google.android.gms.maps.SupportMapFragment" /> 

MapActivity.java

public class MapActivity extends FragmentActivity { 

private GoogleMap map; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.map); 

    map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)) 
         .getMap(); 
    } 

AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.rentalcar" 
android:versionCode="1" 
android:versionName="1.0" > 



<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="16" /> 
<uses-permission android:name="android.permission.INTERNET"></uses-permission> 

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

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

<permission 
     android:name="com.example.rentalcar.permission.MAPS_RECEIVE" 
     android:protectionLevel="signature"/> 
    <uses-permission android:name="com.example.rentalcar.permission.MAPS_RECEIVE"/> 


<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" 
    > 

    <activity 
     android:name="com.example.rentalcar.MainActivity" 
     android:label="@string/app_name" 
     android:screenOrientation="portrait" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity>  

    <activity 
     android:name="com.example.rentalcar.MapActivity" 
     android:label="@string/title_activity_map" 
     android:screenOrientation="portrait" > 
    </activity> 

    <meta-data 
     android:name="com.google.android.maps.v2.API_KEY" 
     android:value="My_Key"/> 

</application> 

</manifest> 

唯一奇怪的是,當我使用keytool獲得SHA1我得到「簽名算法名稱:SHA256withRSA。這可能是問題嗎?如果是,我該如何改變它?

using keytool to get the certificate fingerprints

我有點卡在這裏!感謝您的任何幫助!

在地圖API V2
+0

這可能有助於http://stackoverflow.com/questions/13696620/google-maps-android-api-v2-authorization-failure – Waqas 2013-03-05 09:03:15

+0

嘗試再次生成您的釋放密鑰:http://chocotech.blogspot.com/2012 /10/get-debug-key-and-release-key-for.html – svlzx 2013-12-13 11:58:46

+0

https://stackoverflow.com/a/46418176/2898708 – 2017-09-26 05:05:50

回答

10

,該ONLY件事,一個發佈版本和調試版本之間的變化是,你在這裏註冊https://code.google.com/apis/console/

如果調試工作,並最終發佈不是關鍵,它是唯一改變必要。

因此,我建議您仔細檢查您的發行版keystore的哈希碼,並確保它在Google API控制檯上正確輸入。

+1

它可以是簽名算法應該是SHA1withRSA而不是SHA256withRSA? – user1851212 2013-03-05 11:08:39

+0

只是一個方面添加到這個非常有用的答案。您可以同時創建一個API密鑰,調試和釋放密鑰。這樣做,您不必爲清單或gradle配置等變化而煩惱。只需使用適用於所有應用程序密鑰的one api密鑰即可。 – 2014-06-08 20:40:17

0

只需清除數據(設置 - >應用程序選擇應用程序 - 清除數據 - >卸載)並嘗試。這對我有效。 確保包名稱與Google開發者控制檯中的名稱相同。 如果創建自定義密鑰庫的SHA1代碼在發佈模式下使用相同。或者通過使用同一個密鑰庫簽名來生成apk。

0

1-使用項目的「Android Manifest」文件中的「使用導出嚮導」創建apk文件。

2-插入鍵後和完成前,MD5和SHA1鍵表示爲所示本pic-

3-創建Android項目新SHA1其在點2

檢索到的新的API密鑰給定

4-在清單文件中使用該API密鑰,如下所示

5-清潔您的項目並再次構建APK文件。

6-你現在可以在apk中看到谷歌地圖。

10

,如果你已經嘗試過@Budius的答案,仍面臨着這個錯誤,它可能是由以下情況引起的:

當您添加MapFragment的Android Studio中創建2個文件google_maps_api。XML:一個SRC /調試/ RES內部/值文件夾和其它的src /釋放/ RES /值內。

但由於某些原因只有debug文件夾中的文件是在Android Studio中顯示。因此,當您更改APIkey值時,僅在調試文件夾文件中完成。

所以剛纔複製的google_maps_api.xml文件夾釋放並確保兩者相同與APIKey。

這一切其他的嘗試後,爲我工作。

+1

謝謝!解決我的問題 – user3722523 2017-02-26 13:23:59

+0

謝謝...我一直在工作48小時解決這個問題。不,我得到了解決方案。 – 2017-07-26 19:49:30

相關問題