取得 Google Maps API 金鑰

若要在 Android 中使用 Google 地圖 功能,您必須向 Google 註冊 地圖 API 金鑰。 在這麼做之前,您只會在應用程式中看到空白方格,而不是地圖。 您必須取得Google 地圖 Android API v2 金鑰 - 來自舊版 Google 地圖 Android API 金鑰 v1 的金鑰將無法運作。

取得 地圖 API v2 金鑰牽涉到下列步驟:

  1. 擷取用來簽署應用程式之金鑰存放區的SHA-1指紋。
  2. 在Google API 控制台中建立專案。
  3. 取得 API 金鑰。

取得簽署金鑰指紋

若要向 Google 要求 地圖 API 金鑰,您必須知道用來簽署應用程式的金鑰存放區的 SHA-1 指紋。 一般而言,這表示您必須判斷偵錯密鑰存放區的 SHA-1 指紋,然後判斷用來簽署應用程式以發行之密鑰存放區的 SHA-1 指紋。

根據預設,您可以在下列位置找到用來簽署 Xamarin.Android 應用程式偵錯版本的金鑰存放區:

C:\Users\[USERNAME]\AppData\Local\Xamarin\Mono for Android\debug.keystore

您可以從 JDK 執行 keytool 命令來取得金鑰儲存區的相關資訊。 此工具通常位於 Java bin 目錄中:

C:\Program Files\Android\jdk\microsoft_dist_openjdk_[VERSION]\bin\keytool.exe

使用下列命令執行 keytool (使用上述的檔案路徑):

keytool -list -v -keystore [STORE FILENAME] -alias [KEY NAME] -storepass [STORE PASSWORD] -keypass [KEY PASSWORD]

Debug.keystore 範例

針對預設偵錯金鑰 (自動為您建立以進行偵錯),請使用此命令:

keytool.exe -list -v -keystore "C:\Users\[USERNAME]\AppData\Local\Xamarin\Mono for Android\debug.keystore" -alias androiddebugkey -storepass android -keypass android

生產金鑰

將應用程式部署至Google Play時,必須使用 私鑰進行簽署。 keytool必須使用私鑰詳細數據,以及用來建立生產 Google 地圖 API 金鑰所產生的 SHA-1 指紋來執行。 請記得在部署之前,使用正確的 Google 地圖 API 金鑰來更新AndroidManifest.xml檔案。

Keytool 輸出

您應該在主控台視窗中看到類似下列輸出的內容:

Alias name: androiddebugkey
Creation date: Jan 01, 2016
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Android Debug, O=Android, C=US
Issuer: CN=Android Debug, O=Android, C=US
Serial number: 4aa9b300
Valid from: Mon Jan 01 08:04:04 UTC 2013 until: Mon Jan 01 18:04:04 PST 2033
Certificate fingerprints:
    MD5:  AE:9F:95:D0:A6:86:89:BC:A8:70:BA:34:FF:6A:AC:F9
    SHA1: BB:0D:AC:74:D3:21:E1:43:07:71:9B:62:90:AF:A1:66:6E:44:5D:75
    Signature algorithm name: SHA1withRSA
    Version: 3

您稍後會在本指南中使用SHA-1指紋(在SHA1之後列出)。

建立 API 專案

擷取簽署密鑰存放區的 SHA-1 指紋之後,必須在 Google API 控制台中建立新專案(或將 Google 地圖 Android API v2 服務新增至現有的專案)。

  1. 在瀏覽器中,流覽至 Google Developers Console API & Services 儀錶板 ,然後按兩下 [ 選取專案]。 按兩下專案名稱,或按兩下 [新增專案],以建立新的專案

    Google Developer Console CREATE PROJECT button

  2. 如果您已建立新的專案,請在顯示的 [新增專案] 對話框中輸入項目名稱。 此對話框會根據專案名稱來製造唯一的專案標識碼。 接下來,按兩下 [建立] 按鈕,如下列範例所示:

    New project is named XamarinMapsDemo

  3. 一分鐘左右之後,系統會建立專案,並帶您前往 專案的 [儀錶板 ] 頁面。 從該處,按兩下 [ 啟用APIS與服務]:

    Clicking Google Maps Android API in the Library section

  4. 在 [API 連結庫] 頁面中,按兩下 [地圖 SDK for Android]。 在下一個頁面上,按兩下 [啟用 ] 以開啟此項目的服務:

    Clicking the ENABLE button in the Dashboard section

此時已建立 API 專案,並將 Google 地圖 Android API v2 新增至其中。 不過,在建立項目的認證之前,您無法在專案中使用此 API。 下一節說明如何建立 API 金鑰,並授權 Xamarin.Android 應用程式使用此金鑰。

取得 API 金鑰

建立Google開發人員控制台 API 項目之後,必須建立Android API 金鑰。 Xamarin.Android 應用程式必須先有 API 金鑰,才能授與 Android Map API v2 的存取權。

  1. 顯示的 地圖 SDK for Android 頁面中(在上一個步驟中按兩下 [啟用] 之後),移至 [認證] 索引卷標,然後按兩下 [建立認證] 按鈕:

    Maps SDK for Android Credentials message

  2. 按兩下 [ API 金鑰]:

    Add credentials to your project dialog

  3. 按下此按鈕之後,就會產生 API 金鑰。 接下來,您必須限制此金鑰,讓只有您的應用程式可以使用此金鑰來呼叫 API。 按兩下 [ 限制金鑰]:

    Clicking Restrict Key on the Credentials page

  4. 將 [名稱] 欄位從 API 金鑰 1 變更為名稱,以協助您記住此範例中所使用的金鑰 (Xamarin 地圖 DemoKey)。 接下來,按兩下 [ Android 應用程式] 單選按鈕:

    Selecting Android apps on the Credentials page

  5. 若要新增 SHA-1 指紋,請按兩下 [ + 新增套件名稱和指紋]:

    Clicking Add package name and fingerprint

  6. 輸入應用程式的套件名稱,並輸入SHA-1 憑證指紋(如 keytool 本指南稍早所述取得)。 在下列範例中,輸入的套件名稱 XamarinMapsDemo ,後面接著從 debug.keystore 取得的 SHA-1 憑證指紋:

    Package name entered is com.xamarin.docs.android.map

  7. 請注意,為了讓 APK 存取 Google 地圖,您必須針對用來簽署 APK 的每個金鑰存放區(偵錯和發行)包含 SHA-1 指紋和套件名稱。 例如,如果您使用一部計算機進行偵錯,另一部計算機產生發行 APK,則應該從第一部計算機的偵錯密鑰存放區包含 SHA-1 憑證指紋,以及第二部計算機的發行密鑰存放區中的 SHA-1 憑證指紋。 單擊 [+ 新增套件名稱和指紋],以新增另一個指紋 和套件名稱,如下列範例所示:

    Adding another fingerprint creates another SHA-1 certificate

  8. 按一下 [儲存] 按鈕以儲存您的變更。 接下來,系統會將您傳回至 API 金鑰清單。 如果您有稍早建立的其他 API 金鑰,這些金鑰也會列在這裡。 在這裡範例中,只會列出一個 API 金鑰(在先前步驟中建立) :

    XamarinMapsDemoKey is shown in the API keys list

將專案 連線 成可計費帳戶

從 2018 年 6 月 11 日起,如果專案未連線到計費帳戶,API 密鑰將無法運作(即使行動應用程式仍免費服務)。

  1. 點擊漢堡功能表按鈕,然後選取 [帳單 ] 頁面:

    Selecting the hamburger menu billing section

  2. 按兩下 [鏈接計費帳戶],接著在顯示的彈出視窗上按兩下 [建立計費帳戶],將專案連結至計費帳戶(如果您沒有帳戶,系統會引導您建立新的帳戶):

    Link project to billing account

將金鑰新增至您的專案

最後,將此 API 金鑰新增至 Xamarin.Android 應用程式的 AndroidManifest.XML 檔案。 在下列範例中, YOUR_API_KEY 會取代為先前步驟中產生的 API 金鑰:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:versionName="4.10" package="com.xamarin.docs.android.mapsandlocationdemo"
    android:versionCode="10">
...
  <application android:label="@string/app_name">
    <!-- Put your Google Maps V2 API Key here. -->
    <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="YOUR_API_KEY" />
    <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
  </application>
</manifest>