Відсутній api_key / поточний ключ у службі 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-сервісах 2.1.0

Чи маєте ви якесь уявлення про рішення?


Я використовую карти, і у мене є файл api_key, визначений у файлі AndroidManifest.xml. У вас там є api_key? Щось подібне <meta-data android: name = "com.google.android.geo.API_KEY" android: value = "AIzaSdfdfdfdfdfdfdfdfdRVxThQsNaqY" />
Grzegorz Bielański

Так, у мене є. Маніфест добре налаштований, він завжди працював .. дотепер.
долоня

Відповіді:


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}]
Jozka Jozin

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" знаходиться всередині значення "клієнт"
січня

2
@Ajax -Макс: Це працювало і для мене. Чи можете ви бути настільки добрими, щоб пояснити, чому це працює?
Пінеда

1
Це здається найкращим рішенням, якщо використовувати старі GMS хмарні повідомлення. Новий файл конфігурації виключає ключ GMS замість додавання Firebase.
GordonW

34

Так, як і вперше за допомогою Firebase, я стикаюся з цим. Клацніть на меню програми та натисніть "Керувати".

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

ви можете завантажити google-services.json знову.

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


2
так, я завантажив його знову, і наступного разу це було більше файлу, і це вирішило проблему для мене
Hatem Badawi

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
Jivraj S Shekhawat

привіт, я додав нову конфігурацію, але IDE все ще скаржиться, що у неї відсутній api_key
код

Перш ніж відкрити IDE, ви можете перевірити файл конфігурації, щоб переконатися в наявностіs 'api_key' value. Clearly there є помилка, тому нам потрібно спробувати різні підходи для вирішення проблеми.
Елвіс Олівейра,

це означає, що щоразу, коли я додаю нову залежність у свій файл gradle, я повинен завантажувати новий google-services.json, оскільки він генерує новий api_key?
Ашок Біджой Дебнат

8

Хоча відповідь і коментарі Джозки Йозін прийняли відповідь, Cloud Cloud Messaging ні пов'язані, ні потрібні.

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

Як відомо, ви можете створити конфігураційний файл для 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 .


2

відновити google-services.json за адресою https://developers.google.com/cloud-messaging/android/client#get-config , одна важлива річ, що ви повинні ввімкнути хмарні повідомлення в кроці "Вибрати служби" , відкрийте новий google -services.json файл, ви побачите слова, як

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

без цих слів або без значення current_key не є правильним файлом


2

Мені вдалося вирішити цю проблему за допомогою цих кроків, на які тут не відповіли. Ця відповідь НЕ дозволяє ввімкнути хмарні повідомлення, а лише отримати ключ сервера.

Отже, спершу перейдіть до консолі 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

1

Використання Firebase

GoogleServices'. > Missing api_key/current_key object

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

З інших відповідей тут схоже, що для додавання до файлу потрібно додати хмарні повідомлення Google / Firebase Cloud (GCM / FCM) .api_keygoogle-service.json

Тож я додав залежність від FireMbase FCM перед завантаженням файлу знову, і цього разу ключ був включений.

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

dependencies {
     compile 'com.google.firebase:firebase-messaging:9.0.0'
}

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 з firebase в google-services.json

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

Щоб отримати серверний ключ, перейдіть до ProjectOverview> Налаштування проекту> CloudMessaging> Копіювати АБО генерувати та копіювати serverKey ..


0

додайте це у свій файл google-service.json. ви знайдете його під app / google-service.json

"api_key": [{"current_key": "ваш-google-api-ключ"}]

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.