Получение ключа API Google Maps
Чтобы использовать функции Google Карты в Android, нужно зарегистрироваться в Google и получить ключ API Карт. Без этого в приложениях вместо карты будет отображаться пустая сетка. Нужно получить ключ API Google Карт для Android версии 2, так как ключи от более старого API Google Карт для Android версии 1 не будут работать.
Чтобы получить ключ API Карт версии 2, необходимо сделать следующее:
- Получите отпечаток SHA-1 хранилища ключей, которое используется для подписывания приложения.
- Создайте проект в консоли Google API.
- Получите ключ API.
Получение отпечатка ключа подписывания
Чтобы запросить у Google ключ API для Карт, нужно знать отпечаток SHA-1 хранилища ключей, которое используется для подписывания приложения. Как правило, вам для этого нужно определить отпечаток SHA-1 для хранилища ключей отладки, а затем отпечаток SHA-1 для хранилища ключей, которое будет использоваться для подписывания приложения для выпуска.
По умолчанию хранилище ключей, которое используется для подписывания отладочных версий приложений Xamarin.Android, находится по следующему пути:
C:\Users\[USERNAME]\AppData\Local\Xamarin\Mono для Android\debug.keystore
Информация о хранилище ключей отображается при вызове команды keytool
из JDK. Обычно это средство находится в каталоге bin для Java:
C:\Program Files\Android\jdk\microsoft_dist_openjdk_[VERSION]\bin\keytool.exe
Откройте средство ключей при помощи следующей команды (учитывая указанные выше пути):
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
с данными закрытого ключа, а полученный отпечаток SHA-1 применить для создания ключа API Google Карт для рабочей среды. Не забудьте перед развертыванием включить в файл AndroidManifest.xml правильный ключ API Google Карт.
Выходные данные 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 для хранилища ключей подписывания, следует создать новый проект в консоли API-интерфейсов Google (или добавить службу API Google Карт для Android версии 2 в существующий проект).
В браузере откройте страницу Google Developers Console API & Services Dashboard (Консоль разработчиков API и панель мониторинга служб Google) и щелкните Select a project (Выбрать проект). Щелкните имя проекта или создайте новый, щелкнув NEW PROJECT (Создать проект):
Если вы выбрали создание проекта, введите имя для него в открывшемся диалоговом окне New Project (Новый проект). С помощью этого диалогового окна будет создан уникальный идентификатор проекта, основанный на его имени. Теперь щелкните Create (Создать), как показано в следующем примере:
Примерно через минуту проект будет готов и для него отобразится панель мониторинга. Щелкните Enable APIs and services (Включить API-интерфейсы и службы).
На странице API Library (Библиотека API) щелкните Maps SDK for Android (Пакет SDK Карт для Android). На следующей странице щелкните ENABLE (Включить), чтобы включить службу для этого проекта:
На этом этапе будет создан проект API и в него будет добавлен API Google Карт для Android версии 2. Но вы не сможете использовать этот API в проекте, пока не создадите для него учетные данные. В следующем разделе объясняется, как создать ключ API и авторизовать приложение Xamarin.Android для использования этого ключа.
Получение ключа API
После создания проекта API на консоли разработчика Google вам нужно создать ключ API для Android. Приложения Xamarin.Android должны иметь этот ключ API, чтобы получить доступ к API Карт для Android версии 2.
На странице Maps SDK for Android (Пакет SDK Карт для Android), которая отобразится после нажатия кнопки ENABLE (Включить) на предыдущем шаге, откройте вкладку Credentials (Учетные данные) и нажмите кнопку Create credentials (Создать учетные данные).
Щелкните API key (Ключ API):
После нажатия этой кнопки создается ключ API. Далее необходимо ограничить этот ключ, чтобы только нужное приложение обращалось к API с помощью этого ключа. Щелкните RESTRICT KEY (Ограничить ключ):
В поле Имя замените значение API Key 1 понятным именем, которое поможет идентифицировать назначение этого ключа (в нашем примере это XamarinMapsDemoKey). Теперь щелкните переключатель Android apps (Приложения Android):
Чтобы добавить отпечаток SHA-1, щелкните + Add package name and fingerprint (Добавить имя пакета и отпечаток):
Введите имя пакета для приложения и отпечаток сертификата SHA-1 (полученный с помощью
keytool
, как описано выше в этом руководстве). В следующем примере используются имя пакетаXamarinMapsDemo
и отпечаток сертификата SHA-1, полученный из debug.keystore:Обратите внимание, что для доступа из APK к Google Картам необходимо добавить отпечатки SHA-1 и имена пакетов для каждого хранилища ключей (отладки и выпуска), которое используется для подписывания APK. Например, если вы используете один компьютер для отладки и другой для создания APK выпуска, следует поместить отпечаток сертификата SHA-1 из хранилища ключей отладки на первый компьютер, о отпечаток сертификата SHA-1 из хранилища ключей выпуска на второй компьютер. Щелкните + Add package name and fingerprint (Добавить имя пакета и отпечаток), чтобы добавить еще один отпечаток и имя пакета, как показано в следующем примере:
Нажмите кнопку Сохранить, чтобы применить изменения. Далее вы вернетесь к списку ключей API. Если у вас есть другие ключи API, созданные ранее, они также будут перечислены здесь. В этом примере отображается только один ключ API, который мы создали в предыдущих шагах:
Подключение проекта к оплачиваемой учетной записи
С 11 июня 2018 г. ключ API не будет работать, если проект не подключен к оплачиваемой учетной записи (несмотря на то, что эта служба предоставляется бесплатно для мобильных приложений).
Нажмите кнопку меню "гамбургер" и выберите страницу Billing (Выставление счетов):
Свяжите проект с оплачиваемой учетной записью, щелкнув Link a billing account (Связать учетную запись выставления счетов) а затем CREATE BILLING ACCOUNT (Создать учетную запись выставления счетов) во всплывающем окне (если у вас нет учетной записи, вам будет предложено создать новую):
Добавление ключа в проект
Наконец, добавьте этот ключ 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>