Отсутствует ключ api / текущий ключ с Google Services 3.0.0 и ключ API Карт в сборке.Gradle в
моя проблема очень похожа на отсутствует api_key / текущий ключ с Google Services 3.0.0 но с дальнейшим уровнем сложности.
я обновил свое приложение сегодня утром до com.гуглить.gms: google-services: 3.0.0 и все зависимости play-services 9.0.0
compile 'com.google.android.gms:play-services-analytics:9.0.0'
compile 'com.google.android.gms:play-services-ads:9.0.0'
compile 'com.google.android.gms:play-services-identity:9.0.0'
compile 'com.google.android.gms:play-services-gcm:9.0.0'
теперь я получаю печально известную ошибку
ошибка: не удалось выполнить задачу": hotelsclick: processDebugGoogleServices". > Отсутствует api_key/current_key объект
это, похоже, связано с отсутствием ключа API в Google-сервисах.файл JSON (так мне сказали). Я получил новый ключ API отhttps://developers.google.com/cloud-messaging/android/client#get-config и нашел в нем следующее поле.
"api_key": [],
Я думаю, я должен поместить свой ключ Google Maps API там, но здесь возникает двойная проблема, которую я испытываю:
1-Если я попытаюсь поместить ключ в это поле, это не сработает. Я пробовал с обоими
"api_key": [{ "current_key": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-AE" }],
и
"api_key": ["XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-AE"],
ошибка остается прежней.
2-я использовал gradle для использования динамического здания. Я поместил следующее в свою сборку модуля.Gradle в:
buildTypes {
release {
minifyEnabled true
shrinkResources true
debuggable false
resValue "string", "google_maps_api_key", "ABCDEFGHILMNO... my maps release API key"
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
zipAlignEnabled true
}
debug {
resValue "string", "google_maps_api_key", "ZNTMRNCDNR... my google maps debug API key"
debuggable true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
в Androidmanifest.xml-файл у меня
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_maps_api_key" />
теперь он всегда работал, пока я не обновился до Google Services 3.0.0, я не понимаю, почему он не работает сейчас. Не должен ли он захватить правильный ключ API из скомпилированной сборки.Gradle в файл и положить его в манифест?
Итак, мой двойной вопрос: почему динамический ключ API больше не работает? И как я могу это исправить?
спасибо
6 ответов
вы пытались поместить пустой "current_key" следующим образом:
"api_key": [{ "current_key": "" }]
посмотрите, как это происходит.
изменить: Вы должны заменить "api_key": [] (находится в "клиент") С "api_key": [{ "current_key": "" }]
я смог решить эту проблему с помощью этих шагов, на которые здесь нет ответа. Этот ответ не включает облачный обмен сообщениями, он только извлекает свой серверный ключ. (Уточнение, потому что мой ответ был удален за "дубликат", когда его вообще нет).
Итак, сначала перейдите в консоль Firebase, а затем перейдите в настройки проекта, а затем нажмите на вкладку "облачные сообщения". Посмотрите, где он говорит "ключ сервера", и если нет длинного отображения ключа (не" идентификатор отправителя"), нажмите "Regenerate Key" и длинный ключ должны теперь показать. Скопируйте этот ключ и поместите его в свой Google-сервисы.файл json по адресу:"api_key": [ {"current_key" : "key goes here"} ]
.
этот метод помог мне, пока никто из других не работал, поэтому, надеюсь, это кому-то поможет.
С этой проблемой вы столкнетесь после использования нового инструмента сборкиclasspath 'com.google.gms:google-services:3.0.0'
,
просто воссоздайте свои "Google-сервисы".формат JSON." он будет решен с надеждой.
Если вы случайно удалили ключ или не можете его вернуть, создайте новые учетные данные api здесь и назовите его точно " Android key (auto, созданный сервисом Google)". Это вернет ваши учетные данные обратно в google-services json.
на Android Studio, есть концепция типов сборки и вкусов, и вы можете использовать их, чтобы получить то, что вам нужно. Типы сборки-это разные версии приложения, которые функционально идентичны, но могут отличаться в отладочном коде. По умолчанию все проекты Android Gradle имеют типы сборки debug и release.
кроме того, вы можете добавить Google Maps активность для вашего проекта и Android Studio будет генерировать необходимые файлы для вас, вам нужно только вставить ключи.
поскольку вы используете gradle, вы можете сделать следующее:
построить.Gradle в
android {
.. .. ...
buildTypes {
debug {
resValue "string", "google_maps_api_key", "[YOUR DEV KEY]"
}
release {
resValue "string", "google_maps_api_key", "[YOUR PROD KEY]"
}
}
}
AndroidManifest.в XML
meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="@string/google_maps_api_key"/>
таким образом у вас есть только один AndroidManifest.xml, и вы устанавливаете значение на основе типа сборки.
вы также можете проверить этот манифест заполнитель: http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger#TOC-Placeholder-support
вы должны включить облачный обмен сообщениями, даже если вы не используете его и создать новый файл json. Когда вы включаете Cloud Messaging, вы получаете ключ API, необходимый для него.
Возможно вам нужна любая другая услуга, см. Это: https://stackoverflow.com/a/37358432/4408810