2011-03-07 72 views
3

我已經創建了一個地圖應用程序。它顯示地圖時未簽署APK,但在嘗試簽名並稍後在設備中安裝APK時,地圖不再顯示。如何獲取已簽名Android應用程序的地圖?

+1

僱用一個聲樂教練?但嚴重的是你遵循了什麼步驟?,你的問題是[模糊](http://code.google.com/android/maps-api-signup.html) – Reno 2011-03-07 07:55:13

+1

很確定你是[同一個人](http:///stackoverflow.com/questions/5217139/how-to-get-map-on-signed-android-application)誰想唱歌。垃圾郵件相同的問題不會幫助。 – Reno 2011-03-07 08:35:27

+1

如果你可以和你的同事交談,這樣你就不會同時提出同樣的問題,那將不勝感激...... – 2011-03-07 09:11:21

回答

3

您需要一個單獨的Google Maps API密鑰才能發佈。你說你的APK在工作時沒有簽名,但是應用程序實際上是由你的SDK自動使用調試密鑰進行簽名的。這可能也是您擁有有效的Google Maps API密鑰的人。

從文檔在https://code.google.com/android/add-ons/google-apis/mapkey.html

當你正在開發和調試 您的應用程序,你很可能會 在調試 模式sigining您的應用程序 - 也就是SDK構建工具 會自動登錄您的 應用程序使用調試 證書。爲了讓您的MapView 元素在此期間正確顯示地圖數據 ,您應該獲得 臨時地圖API密鑰,並註冊到 調試證書。爲此,您首先需要獲得調試證書的MD5指紋 。當您準備發佈您的應用程序時,您的 必須註冊您的發佈證書 與Google地圖服務和 獲取新的Maps API密鑰。您必須 然後更改您的應用程序中 的MapView元素以引用新的 API密鑰。

+0

如果這不是問題,我還會遇到一些其他可能相關的奇怪行爲,描述在http://www.kind-kristiansen.no/2010/android-map-tiles-not-loading-and-possible-fixes/ – rogerkk 2011-03-07 08:00:05

+0

我已經使用this.beu,即使我無法獲得地圖。 – 2011-03-07 08:16:49

+0

你在logcat中遇到什麼錯誤? – rogerkk 2011-03-07 08:28:23

0

你在兩個地方使用了相同的API密鑰嗎?因爲每個服務器上的api密鑰都必須是唯一的。

http://code.google.com/apis/maps/signup.html

+0

是的,當我創建apk文件時,我使用了相同的API密鑰 – dilipkaklotar 2011-03-07 08:56:21

+0

請爲其他服務器創建一個新的API密鑰。你不能在每個上使用相同的API密鑰。 – Luci 2011-04-01 08:03:35

0

其更好地以這種方式

Select the project in workspace-->rightclick---> click export--->export android apps-->next-->next--->enter keystore file name--->next--->enter key alis--->finish 

做(請參閱本here

0

像什麼RogerKK說,你怎麼做你的測試/部署? 如果您最初針對連接的Android設備調試應用程序,那很可能使用調試證書SHA-1生成的密鑰。如果您嘗試執行發佈版本,則需要完全不同的密鑰。

這是我跑過的東西,但使用調試證書進行簽名。

http://www.digitalopium.com/android-google-maps-api-tutorial/

0

對於誰是面臨着nirav帕特爾也有同樣問題的所有朋友。

您可以使用下面的代碼來找到符號和無符號哈希鍵

public class MainActivity extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     try 

     { 

      PackageInfo info = getPackageManager().getPackageInfo("Your package name here",PackageManager.GET_SIGNATURE); 

      for (Signature signature : info.signatures) 
      { 
       MessageDigest md = MessageDigest.getInstance("SHA"); 
       md.update(signature.toByteArray()); 
       Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); 
      } 
     } 
     catch (NameNotFoundException e) 
     { 
      System.out.println("name not found...."+e); 
     } catch (NoSuchAlgorithmException e) 
     { 
      System.out.println("NoSuchAlgorithmException...."+e); 
     } 
    } 
} 
相關問題