Отсутствует ключ api_key / current в Службах Google 3.0.0

157

Поскольку я обновил проект до последней версии служб и библиотек Google (9.0.0), у меня возникла странная проблема:

Ошибка сборки

Оценка консоли:

:app:processDebugGoogleServices
Parsing json file: /Users/cyrilmorales/Documents/Projects/mobilemeans-punainenristi/app/google-services.json
:app:processDebugGoogleServices FAILED
Error:Execution failed for task ':app:processDebugGoogleServices'.
> Missing api_key/current_key object
Information:BUILD FAILED

build.gradle (root):

dependencies {
    classpath 'com.android.tools.build:gradle:2.2.0-alpha1'
    classpath 'com.google.gms:google-services:3.0.0'
}

build.gradle (приложение):

dependencies {
    ....
    compile 'com.google.android.gms:play-services-analytics:9.0.0'
    compile 'com.google.android.gms:play-services-gcm:9.0.0'
    compile 'com.google.android.gms:play-services-maps:9.0.0'
    compile 'com.google.android.gms:play-services-location:9.0.0'
    ...
}
apply plugin: 'com.google.gms.google-services'

Тем не менее, он хорошо работает с библиотеками сервисов play в 8.4.0 и google-services 2.1.0

У вас есть идея решения?

palmsnipe
источник
Я использую карты, и я определил api_key в файле AndroidManifest.xml. У тебя там есть api_key? Нечто подобное <meta-data android: name = "com.google.android.geo.API_KEY" android: value = "AIzaSdfdfdfdfdfdfdfdRVxThQsNaqY" />
Гжегож Белански
Да, у меня есть это. Манифест хорошо настроен, он всегда работал .. до сих пор.
пальмовая ножка

Ответы:

162

Создайте новый файл конфигурации (google-services.json) по адресу : https://developers.google.com/cloud-messaging/android/client#get-config.

Новый конфигурационный файл "api_key": [ { "current_key": XXX } ]в разделе клиента

Обновить: или вручную включить службу в консоли разработчика и сгенерировать ключ.

Йозка Йозин
источник
1
Новое в файле конфигурации "api_key": [{"current_key": XXX}]
Йозка Йозин
1
Какой ключ API должен идти туда?
Марко Дзанетти
8
Вы должны включить Cloud Messaging, даже если вы его не используете, и создать новый файл JSON. Когда вы включаете Cloud Messaging, вы получаете ключ API, в котором он нужен.
Рафаэль Гутьеррес
2
Я получил ключ API в файле JSON, включив API-интерфейс Cloud Messaging "api_key": [{"current_key": "the_api_key"}], но все еще не работает. Я действительно не знаю, что с этим не так. : - /
Марко Дзанетти
7
Кто знает, для чего этот api_key? До этого все работало нормально ...
Павел Бирюков,
89

Добавление пустого значения текущего ключа в файл google-services.json решило эту проблему для меня

"api_key": [{ "current_key": "" }]

Аякс-Макс
источник
1
Просто думал , что я хотел бы добавить , что значение «api_key» находится внутри значения «клиент»
Jan
2
@Ajax - Макс: это сработало и для меня. Не могли бы вы объяснить, почему это работает?
Пинеда
1
это кажется наилучшим решением, если используется старый облачный обмен сообщениями GMS. Новый файл конфигурации исключает ключ GMS вместо добавления Firebase.
GordonW
34

Да, как и в первый раз, когда я использую Firebase, я сталкиваюсь с этим. Нажмите на меню вашего приложения и нажмите «Управление».

введите описание изображения здесь

Вы можете снова загрузить google-services.json.

введите описание изображения здесь

Хот Аунг Хлейнг
источник
2
да, я скачал его снова, и в следующий раз это был файл большего размера, и это решило проблему для меня
Хатем Бадави,
1
Я могу подтвердить: я зарегистрировался в Firebase Analytics, и он автоматически загрузил google-services.json, не содержащий ключа API. Затем я скачал его вручную, как этот, и ключ API был в JSON.
Чичилатте
Какой URL-адрес для доступа к этой панели?
Шон Бич
9

Для всех, у кого есть эта проблема, сейчас вам нужно добавить любой сервис в ваше приложение по адресу https://developers.google.com/cloud-messaging/android/client#get-config.

В моем случае я добавил admob (уже есть аналитика и gcm), а затем файл был создан с помощью api_key.

Я думаю, что это ошибка, и скоро она будет исправлена, пока не сделайте это.

Элвис Оливейра
источник
действительно, есть ошибка ... мне пришлось добавить приглашения в приложение, чтобы получить новый
JSON
Привет! Я добавил новый конфиг, но IDE все еще жалуется на отсутствие api_key
код
Перед тем, как открыть IDE, вы можете проверить файл конфигурации, чтобы убедиться в наличии s 'api_key' value. Clearly thereошибки, поэтому нам нужно попробовать разные подходы для решения проблемы.
Элвис Оливейра
Означает ли это, что каждый раз, когда я добавляю новую зависимость в свой файл gradle, мне приходится загружать новый google-services.json, так как он генерирует новый ключ api_key?
Ашок Биджой Дебнатх
8

Хотя принятый ответ Йозки Йозина и его комментарии, Cloud Messaging не связаны и не требуются.

Тем не менее, переработка google-services.jsonявляется ключом к решению (так что я проголосовал за него). Ниже то, что я сделал:

Как вы знаете, вы можете создать файл конфигурации для Google Analytics из Руководства для разработчиков Google .

1: выберите ваше приложение.

1) выбрать приложение

2: закройте всплывающее окно! Прячется ...

Закройте всплывающее окно!

3: ВАРИАНТ ADMOB!

скрытая опция admob

4 : Конечно, выберите и включите его!

включи это!

5: Теперь мы можем правильно создавать файлы конфигурации!

генерировать файлы конфигурации

6: Мы сделали это! На этот раз в файле конфигурации должен быть указан ключ api_key .

мы сделали это!

Вывод: интерфейс интерактивного инструмента генерации немного сбивает с толку ...

хата
источник
1
спасибо, я смог получить новый конфиг, но IDE все еще жалуется, что ему не хватает api_key
код
Укусил в заблуждение ... Это ужасающее !!! Слава за ваше четкое объяснение.
Нильс
7

Вы можете скачать google-services.jsonфайл снова.

Шаги для скачивания:

1). Нажмите на верхнее меню в вашем приложении в Firebaseконсоли.

2). Нажмите на управление.

3). Вы найдете Download the latest configвариант файла, скачать и заменить google-services.jsonфайл в вашем приложении.

Анубхав
источник
4

Сначала в вашем файле JSON

замещать

"api_key": []

с участием

"api_key": [{ "current_key": "" }]

Тогда сборка gradle будет успешной, но при запуске приложения вы можете получить ошибки, подобные следующим:

Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.
> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/LICENSE
    File1: C:\Users\bucky\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-core\2.2.2\d20be6a5ddd6f8cfd36ebf6dea329873a1c41f1b\jackson-core-2.2.2.jar
    File2: C:\Users\bucky\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-databind\2.2.2\3c8f6018eaa72d43b261181e801e6f8676c16ef6\jackson-databind-2.2.2.jar
    File3: C:\Users\bucky\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-annotations\2.2.2\285cb9c666f0f0f3dd8a1be04e1f457eb7b15113\jackson-annotations-2.2.2.jar

Чтобы исправить эту проблему, вы можете добавить следующее в ваш файл app.gradle. Это сработало для меня.

packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/ASL2.0'
    }

Редактировать: он показал мне ошибку позже при создании файла apk. Поэтому мне пришлось снова загрузить файл JSON. После 2 испытаний я получил файл JSON с действительным ключом API.

дож
источник
3

Если вы не используете Firebase, правильная ссылка для создания файла конфигурации google-services.json фактически находится здесь .

Phileo99
источник
2

Возрожденный Google-services.json в https://developers.google.com/cloud-messaging/android/client#get-config , одна важная вещь, что вы должны включить Cloud Messaging в «Выберите услуги» шаг , откройте новый Google В файле -services.json вы увидите такие слова, как

    "api_key": [
     {
       "current_key": "xxxxxxxxxxx"
     }"

без этих слов или без значения current_key не тот файл

dx3906
источник
2

Я смог решить эту проблему с помощью этих шагов, которые не получили ответа здесь. Этот ответ НЕ включает Cloud Messaging, он только получает свой серверный ключ.

Итак, сначала перейдите в консоль Firebase, затем перейдите в «Настройки проекта», а затем нажмите на вкладку «Облачные сообщения». Посмотрите, где написано «ключ сервера», и если не отображается длинный ключ (не номер «Идентификатор отправителя»), нажмите «Восстановить ключ», и теперь должен отобразиться длинный ключ. Скопируйте этот ключ и поместите его в свой файл google-services.json по адресу:"api_key": [ {"current_key" : "key goes here"} ] .

Этот метод помог мне, пока никто другой не работал, так что, надеюсь, это кому-то поможет.

Дэвид Веласкес
источник
2

введите описание изображения здесь

Нажмите Обзор -> Значок шестеренки -> Настройки проекта.

введите описание изображения здесь

Перейдите в раздел Загрузка последней конфигурации и нажмите кнопку google-service.json, чтобы загрузить файл, сохранить его в папке приложения и снова скомпилировать. Наслаждайтесь!

Пинкеш Дарджи
источник
2

Вам необходимо добавить в проект отпечатки пальцев сертификата SHA, а затем снова загрузить файл google-services.jason, который должен автоматически содержать "api_key": [{"current_key": "xxxxxx"}].

Вы можете просмотреть следующую страницу, чтобы увидеть, как генерировать отпечатки пальцев:

https://developers.google.com/android/guides/client-auth

В Windows просто выполните следующую команду и используйте android в качестве пароля для целей отладки:

keytool -exportcert -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore
Hexise
источник
1

Использование Firebase

GoogleServices'. > Missing api_key/current_key object

Я получил эту ошибку после обновления существующего проекта до новых Firebase Services. Сгенерированный файл google-service.json, загруженный со страницы настроек проекта firebase, не содержит api_keyнеобходимого.

Из других ответов здесь видно, что Google / Firebase Cloud Messaging (GCM / FCM) необходимо добавить, чтобы это api_keyбыло включено в google-service.jsonфайл.

Поэтому я добавил зависимости от FCM в Firebase перед повторной загрузкой файла, и на этот раз ключ был включен.

Включить FCM (GCM)

dependencies {
     compile 'com.google.firebase:firebase-messaging:9.0.0'
}
TouchBoarder
источник
1

Если вы не хотите перенастраивать и загружать google-services.jsonфайл, вы можете получить ключ API непосредственно из консоли Firebase. Просто иди в

Обзор> Добавить другое приложение> Интернет

Вы получите конфигурацию для вашей базы данных, которая будет содержать apiKey. Просто скопируйте это значение и поместите его в current_keyзначение, обозначенное XXX ниже

"api_key": [{ "current_key": "XXX" }]
Шакти
источник
0

Для пожарных мигрантов:

убедитесь, что вы добавили хотя бы один отпечаток в настройки своего проекта и повторно загрузите файл google-services.json

Су-Ау Хван
источник
Спасибо, я пошел в соответствии с инструкциями лаборатории кода и сначала не добавил ключ SHA1. Позже мне пришлось добавить в качестве моего ApiKey - CurrentKey отсутствовал. Не уверен, так ли это было или нет. Но это решило мою проблему.
Рана Ранвиджай Сингх
0

Если вы используете firebaes, вы должны скопировать serverKey из базы данных на google-services.json

 "api_key": [{ "current_key": "SERVER_KEY"}

Чтобы получить ключ сервера, перейдите в ProjectOverview> Настройки проекта> CloudMessaging> Копировать ИЛИ создать и скопировать serverKey.

Тарун Воора
источник
0

добавьте это в свой файл google-service.json. вы найдете его в app / google-service.json

"api_key": [{"current_key": "your-google-api-key"}]

Хамза Фарид
источник