Ключ API Google Maps

Автор:

learn.microsoft.com

Для использования функций Google Maps в Android необходимо зарегистрировать ключ Maps API в Google. Пока вы этого не сделаете, в ваших приложениях вместо карты будет отображаться пустая сетка. Рекомендуется получить Google Maps API key для Android 2й версии, ключи от более старой версии к первой не подходят.

Как получить Google Maps API key для Android 2й версии

  • получите отпечаток SHA-1 хранилища ключей, которое используется для подписи приложения;
  • создайте проект в консоли Google APIs;
  • получение ключа API.

Получение отпечатка ключа подписи для Google Maps API key

Чтобы приобрести ключ Google API, необходимо знать отпечаток SHA-1 хранилища ключей, используемого для подписи приложения. Для этого вам нужно определить отпечаток SHA-1 для отладочного хранилища ключей, а затем отпечаток SHA-1 для хранилища ключей, которое используется для подписи вашего приложения для выпуска.

Visual Studio

По умолчанию хранилище ключей, которое используется для подписи отладочных версий приложения Xamarin.Android, можно найти в следующем месте:

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

Информацию о хранилище ключей можно получить, выполнив команду keytool из JDK. Этот инструмент обычно находится в каталоге Java bin:

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

Запустите keytool с помощью следующей команды (используя пути к файлам, указанные выше):

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

Visual Studio для Mac

По умолчанию хранилище ключей, которое используется для подписи отладочных версий приложения Xamarin.Android, можно найти в следующем месте:

/Users/[USERNAME]/.local/share/Xamarin/Mono for Android/debug.keystore

Информацию о хранилище ключей можно получить, выполнив команду keytool из JDK. Этот инструмент обычно находится в каталоге Java bin:

/System/Library/Java/JavaVirtualMachines/[VERSION].jdk/Contents/Home/bin/keytool

Запустите keytool с помощью следующей команды (используя пути к файлам, указанные выше):

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

Пример Debug.keystore

Для ключа отладки по умолчанию (который автоматически создается), используйте эту команду:

Visual Studio

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

Visual Studio для Mac

Bash
keytool -list -v -keystore /Users/[USERNAME]/.local/share/Xamarin/Mono\ for\ Android/debug.keystore -alias androiddebugkey -storepass android -keypass android

Ключи для рабочей среды

При развертывании приложения в Google Play оно должно быть подписано закрытым ключом. Необходимо запустить инструмент keytool с данными закрытого ключа, а полученный отпечаток SHA-1 использовать для создания производственного ключа API Google Maps. Не забудьте обновить файл AndroidManifest.xml с правильным апи ключом для гугл карт перед развертыванием.

Выходные данные keytool

В окне консоли вы должны увидеть что-то похожее на следующий результат:

shell
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 APIs (или добавить службу Google Maps Android API v2 в существующий проект).

1. В браузере перейдите в Google Developers Console API & Services Dashboard и нажмите Select a project. Щелкните на названии проекта или создайте новый, нажав кнопку NEW PROJECT:

2. Если вы создали новый проект, введите имя проекта в появившемся диалоговом окне (New Project) Новый проект. В этом диалоге будет изготовлен уникальный идентификатор проекта, основанный на имени вашего проекта. Затем нажмите кнопку Создать, как показано в данном примере:

3. Через минуту или около того проект будет создан, и вы попадете на страницу Dashboard проекта. Там нажмите кнопку ENABLE APIS AND SERVICES (включить API-интерфейсы и службы):

4. На странице API Library выберите Maps SDK для Android. На следующей странице нажмите ENABLE, чтобы включить службу для этого проекта:

На данном этапе проект API создан и в него добавлен Google Maps Android API v2. Однако вы не сможете использовать этот API в своем проекте, пока не создадите для него учетные данные. В следующем разделе объясняется, как создать ключ API и авторизовать приложение Xamarin.Android для использования этого ключа.

Получение ключа API Android

После создания проекта API Google Developer Console необходимо создать ключ API Android. Приложения Xamarin.Android должны иметь ключ API, прежде чем им будет предоставлен доступ к Android Map API v2.

1. На открывшейся странице Maps SDK for Android (после нажатия кнопки ENABLE в предыдущем шаге) перейдите на вкладку Credentials и нажмите кнопку Create credentials:

2. Нажмите кнопку API-ключ:

3. После нажатия этой кнопки будет сгенерирован ключ API. Далее необходимо ограничить этот ключ, чтобы только ваше приложение могло вызывать API с этим ключом. Нажмите кнопку ЗАПРЕТИТЬ КЛЮЧ (RESTRICT KEY):

4. Измените поле Name с API Key 1 на имя, которое поможет вам вспомнить, для чего используется ключ (в данном примере используется XamarinMapsDemoKey). Затем нажмите радиокнопку Android apps (Приложение Android):

5. Чтобы добавить отпечаток SHA-1, нажмите + Добавить имя пакета и отпечаток (Add package name and fingerprint):

6. Введите имя пакета вашего приложения и введите отпечаток сертификата SHA-1 (полученный с помощью keytool, как описано ранее в этом руководстве). В следующем примере вводится имя пакета XamarinMapsDemo, а затем отпечаток сертификата SHA-1, полученный из debug.keystore:

7. Обратите внимание, что для того, чтобы ваш APK получил доступ к Google Maps, вы должны включить отпечатки SHA-1 и имена пакетов для каждого хранилища ключей (debug и release), которое вы используете для подписи вашего APK. Например, если вы используете один компьютер для отладки, а другой – для создания релизного APK, вы должны включить отпечаток сертификата SHA-1 из отладочного хранилища первого компьютера и отпечаток сертификата SHA-1 из релизного хранилища второго компьютера. Нажмите + Добавить имя пакета и отпечаток, чтобы добавить еще один отпечаток и имя пакета, как показано в этом примере:

8. Нажмите кнопку Сохранить (Save), чтобы сохранить изменения. Далее вы вернетесь к списку ваших ключей API. Если у вас есть другие ключи API, которые вы создали ранее, они также будут перечислены здесь. В данном примере в списке указан только один API-ключ (созданный в предыдущих шагах):

Подключение проекта к оплачиваемому счету

Начиная с 11 июня 2018 года, ключ API не будет работать, если проект не подключен к платному счету (даже если услуга по-прежнему бесплатна для мобильных приложений).

1. Нажмите кнопку меню «Гамбургер» и выберите страницу Billing (Выставление счетов):

2. Свяжите проект с биллинговым счетом, нажав Link a billing account, а затем CREATE BILLING ACCOUNT в появившемся всплывающем окне (если у вас нет счета, вам будет предложено создать новый):

Добавление ключа API Google Maps в проект

Наконец, добавьте этот API-ключ в файл AndroidManifest.XML вашего приложения Xamarin.Android. В следующем примере 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>

Полезные ссылки:

Оглавление

Материалы по теме