Google Maps V2 не работает в производстве с правильным ключом
У меня возникли серьезные проблемы с тем, что Google Maps работает на производстве в приложении для Android. Это то, что я сейчас получаю (дно - это просто реклама).
![App production screen]()
Основные шаги, которые я выполнил:
1) Я гарантировал, что у меня есть правильный ключ производства SHA1 и реализовал его в API Google Консоли, а также в приложении (они имеют ключ, который дает Google). Я зарегистрировал два ключа - один для отладки и один для производства
2) Работает Интернет, местоположение и т.д.
3) Приложение работает в режиме DEBUG, но не работает, когда подписано и установлено на устройстве через USB. Я трижды проверил подпись SHA 1 знака и т.д.
4) MapsFragment поступает из шаблона, доступного в Android Studio.
В режиме производства лог-код отображает это:
01-11 16:04:54.511 19346-19437/com.mike.mapstest E/Google Maps Android API﹕ Authorization failure. Please see https://developers.google.com/maps/documentation/android/start for how to correctly set up the map.
01-11 16:04:54.516 19346-19437/com.mike.mapstest E/Google Maps Android API﹕ In the Google Developer Console (https://console.developers.google.com)
Ensure that the "Google Maps Android API v2" is enabled.
Ensure that the following Android Key exists:
API Key: YOUR_KEY_HERE
Android Application (<cert_fingerprint>;<package_name>): <SHA1 Removed for this> ;com.mike.mapstest
Эта ошибка, очевидно, говорит, что что-то не так с моим auth?
Что я делаю неправильно?
Ответы
Ответ 1
На основе вывода logcat из вашей отлаживаемой сборки выпуска:
01-11 16:04:54.511 19346-19437/com.mike.mapstest E/Google Maps Android API﹕ Authorization failure. Please see https://developers.google.com/maps/documentation/android/start for how to correctly set up the map.
01-11 16:04:54.516 19346-19437/com.mike.mapstest E/Google Maps Android API﹕ In the Google Developer Console (https://console.developers.google.com)
Ensure that the "Google Maps Android API v2" is enabled.
Ensure that the following Android Key exists:
API Key: YOUR_KEY_HERE
Android Application (<cert_fingerprint>;<package_name>): <SHA1 Removed for this> ;com.mike.mapstest
похоже, что вы не переопределили заполнитель ключа api YOUR_KEY_HERE
в манифесте (или отдельный файл ключей api, в зависимости от вашей конфигурации). Замените эту строку, где бы она ни находилась, с вашим фактическим ключом, и вам должно быть хорошо идти.
Изменить: этот учебник, если он соответствует вашей конфигурации, возможно, объясняет, почему вы видите это только для релизов:
Вернитесь в Android Studio и вставьте ключ API в раздел YOUR_KEY_HERE файла:
Обратите внимание, что эти действия позволили Google Maps поддерживать отладочную версию пакета приложений. Ключ API также необходимо будет добавить в файл google_maps_api.xml, расположенный в значениях MapDemo → app → src → release → res → , когда готов к выпуску версия приложения.
Ответ 2
У меня были такие же проблемы, и я несколько дней стучал головой о стену. Я прочитал все сообщения о том, чтобы ввести правильный ключ. Я поместил правильный ключ в свой файл google_maps_api.xml. StKent, упомянутый выше, чтобы перезаписать фактическую строку в AndroidManifest.xml. Это то, что исправило это для меня.
Что я имел, когда он не работал:
в AndroidManifest.xml:
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_maps_key" />
и в google_maps_api.xml:
<string name="google_maps_key"
templateMergeStrategy="preserve"
translatable="false">AIza_the actual key</string>
Что я изменил для работы
Я изменил свой AndroidManifest.xml, чтобы включить:
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="AIzsa_the actual key" />
Ответ 3
Отладка и производственный ключ будут разными. Если вы используете отладочный ключ для режима выпуска, вы не можете просмотреть карту google. В режиме выпуска, когда вы меняете ключ карты google, вы должны очистить проект, а затем экспортировать apk.
вы можете получить дополнительную информацию
https://developers.google.com/maps/documentation/android/start
чтобы получить частный SHA1 из хранилища отладочной информации
keytool -list -v -keystore ~ /.android/debug.keystore -alias androiddebugkey -storepass android -keypass your_app_password
чтобы увидеть больше
Отпечаток SHA-1 сертификата хранилища ключей
или вы можете использовать инструмент eclipse для создания закрытого ключа SHA1 с помощью меню экспорта
Ответ 4
При использовании Android Studio для создания Google Maps Activity он игнорирует ваши конфигурации конфигурации gradle и использует стандартный debug.keystore
. SHA1 в google_maps_api.xml
основан на этом умолчании. При создании разрешения на консоли Google API обязательно используйте свою продукцию и отлаживайте SHA1, если вы используете не умолчанию.
Ответ 5
В моем случае я ввел неправильное имя пакета в Google API API Manager - Credentials - "Ограничить использование приложений Android". Убедитесь, что вы указали правильное имя пакета (как в AndroidManifest.xml) и правильные отпечатки пальцев SHA (для отладки и производства). ![Скриншот Менеджера API Google]()
Ответ 6
Решив, я включил манифест "Ключ для приложений браузера (с рефери)" вместо "Ключ для приложений Android (с сертификатами)" из консоли Google API