Fehlender api_key / aktueller Schlüssel mit Google Services 3.0.0

157

Seit ich das Projekt mit der neuesten Version von Google Services and Libraries (9.0.0) aktualisiert habe, habe ich dieses seltsame Problem:

Fehler beim Erstellen

Notenkonsole:

: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 (App):

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'

Es funktioniert jedoch gut mit den Play Service-Bibliotheken in 8.4.0 und Google Services 2.1.0

Haben Sie eine Vorstellung von der Lösung?

Palmnipe
quelle
Ich verwende Karten und habe api_key in der Datei AndroidManifest.xml definiert. Hast du dort api_key? So etwas <meta-data android: name = "com.google.android.geo.API_KEY" android: value = "AIzaSdfdfdfdfdfdfdfdfdRVxThQsNaqY" />
Grzegorz Bielański
Ja ich habe es. Das Manifest ist gut konfiguriert, es hat immer funktioniert .. bis jetzt.
Palmsnipe

Antworten:

162

Generieren Sie eine neue Konfigurationsdatei (google-services.json) unter: https://developers.google.com/cloud-messaging/android/client#get-config

Neue Konfigurationsdatei mit "api_key": [ { "current_key": XXX } ]im Client-Bereich

Update: oder manuell aktivierter Dienst in der Entwicklerkonsole und Generieren des Schlüssels.

Jozka Jozin
quelle
1
Neu ist in der conf-Datei "api_key": [{"current_key": XXX}]
Jozka Jozin
1
Welcher API-Schlüssel sollte dorthin gehen?
Marco Zanetti
8
Sie müssen Cloud Messaging auch dann aktivieren, wenn Sie es nicht verwenden und eine neue JSON-Datei generieren. Wenn Sie Cloud Messaging aktivieren, erhalten Sie den API-Schlüssel, den Sie dafür benötigen.
Rafael Gutiérrez
2
Ich habe den API-Schlüssel in der JSON-Datei erhalten, indem ich die Cloud Messaging-API "api_key" aktiviert habe: [{"current_key": "the_api_key"}], funktioniert aber immer noch nicht. Ich weiß nicht wirklich, was daran falsch ist. : - /
Marco Zanetti
7
Wer weiß, wofür dieser api_key ist? Es hat gut funktioniert ohne es vorher ...
Pavel Biryukov
89

Das Hinzufügen eines leeren aktuellen Schlüsselwerts in der Datei google-services.json hat dieses Problem für mich gelöst

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

Ajax - die max
quelle
1
Ich dachte nur, ich würde hinzufügen, dass der Wert "api_key" innerhalb des Werts "client" liegt
Januar
2
@ Ajax-the Max: Das hat auch bei mir funktioniert. Könnten Sie so freundlich sein, zu erklären, warum dies funktioniert?
Pineda
1
Dies scheint die beste Lösung zu sein, wenn Sie altes GMS-Cloud-Messaging verwenden. Die neue Konfigurationsdatei schließt den GMS-Schlüssel aus, anstatt Firebase hinzuzufügen.
GordonW
34

Ja, wie bei der ersten Verwendung mit Firebase sehe ich das so. Klicken Sie auf Ihr App-Menü und klicken Sie auf "Verwalten".

Geben Sie hier die Bildbeschreibung ein

Sie können google-services.json erneut herunterladen.

Geben Sie hier die Bildbeschreibung ein

Htoo Aung Hlaing
quelle
2
Ja, ich habe es erneut heruntergeladen und es war das nächste Mal eine größere Datei und dies behebt das Problem für mich
Hatem Badawi
1
Ich kann bestätigen: Ich habe mich bei Firebase Analytics angemeldet und es wurde automatisch eine google-services.json heruntergeladen, die keinen API-Schlüssel enthält. Dann habe ich es manuell so heruntergeladen und der API-Schlüssel war im JSON.
Chichilatte
Wie lautet die URL, um zu diesem Dashboard zu gelangen?
Sean Beach
9

Für alle, die dieses Problem haben, müssen Sie Ihrer App vorerst einen beliebigen Dienst hinzufügen https://developers.google.com/cloud-messaging/android/client#get-config

In meinem Fall habe ich admob hinzugefügt (habe bereits Analytics und gcm) und dann wurde die Datei mit api_key generiert.

Ich denke, es ist ein Fehler und wird bald behoben sein, bis dahin mach es.

Elvis Oliveira
quelle
in der Tat gibt es einen Fehler ... Ich musste auch App-Einladungen hinzufügen, um neue
Json
Hallo, ich habe die neue Konfiguration hinzugefügt, aber die IDE beschwert sich immer noch, dass es fehlt api_key
Code
Bevor Sie die IDE öffnen, können Sie die Konfigurationsdatei überprüfen, um sicherzustellen, dass s 'api_key' value. Clearly thereein Fehler vorliegt. Daher müssen wir verschiedene Ansätze ausprobieren, um das Problem zu lösen.
Elvis Oliveira
Bedeutet das, dass ich jedes Mal, wenn ich eine neue Abhängigkeit in meine Gradle-Datei einfüge, eine neue google-services.json herunterladen muss, da sie einen neuen api_key generiert?
Ashok Bijoy Debnath
8

Obwohl Jozka Jozins Antwort und ihre Kommentare akzeptiert wurden, ist Cloud Messaging weder verwandt noch erforderlich.

Trotzdem ist das erneute Generieren google-services.jsonder Schlüssel zur Lösung (also habe ich ihn gewählt). Folgendes habe ich getan:

Wie Sie wissen, können Sie die Konfigurationsdatei für Analytics aus dem Google Developers Guide generieren .

1: Wählen Sie Ihre App.

1) Wählen Sie eine App

2: Schließen Sie das Popup! Es versteckt sich ...

Schließen Sie das Popup!

3: DIE OPTION VON ADMOB!

die versteckte Option von Admob

4: Natürlich auswählen und aktivieren!

aktiviere es!

5: Jetzt können wir richtig Konfigurationsdateien generieren!

Konfigurationsdateien generieren

6: Wir haben es geschafft! Dieses Mal sollte die Konfigurationsdatei den api_key entsprechend enthalten.

wir haben es geschafft!

Fazit: Die Benutzeroberfläche des interaktiven Generierungswerkzeugs ist etwas verwirrend ...

hata
quelle
1
danke, ich konnte die neue Konfiguration bekommen, aber die IDE beschwert sich immer noch, dass api_key fehlt
Code
Ein bisschen verwirrend ... Es ist schrecklich !!! Ein großes Lob für Ihre klare Erklärung.
Niels
7

Sie können die google-services.jsonDatei erneut herunterladen .

Schritte zum Herunterladen:

1). Klicken Sie in der FirebaseKonsole in Ihrer App auf das Hauptmenü .

2). Klicken Sie auf Verwalten.

3). Sie finden die Download the latest configDateioption, laden die google-services.jsonDatei herunter und ersetzen sie in Ihrer Anwendung.

Anubhav
quelle
4

Zuerst in Ihrer JSON-Datei

Ersetzen

"api_key": []

mit

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

Dann ist der Gradle-Build erfolgreich, aber wenn Sie Ihre Anwendung ausführen, können Fehler wie die folgenden auftreten.

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

Um dieses Problem zu beheben, können Sie Ihrer app.gradle-Datei Folgendes hinzufügen. Es hat bei mir funktioniert.

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'
    }

Bearbeiten: Es zeigte mir später einige Fehler beim Erstellen der APK-Datei. Also musste ich die json-Datei erneut herunterladen. Nach 2 Versuchen habe ich die JSON-Datei mit einem gültigen API-Schlüssel erhalten.

Doge
quelle
3

Wenn Sie nicht Firebase verwenden, um der richtige Link , um die Google-services.json Konfigurationsdatei zu erzeugen , tatsächlich gefunden hier .

Phileo99
quelle
2

Ich konnte dieses Problem mit diesen Schritten lösen, die hier nicht beantwortet werden. Diese Antwort aktiviert NICHT Cloud Messaging, sondern ruft nur den Serverschlüssel ab.

Gehen Sie also zuerst zur Firebase-Konsole, dann zu den Projekteinstellungen und klicken Sie dann auf die Registerkarte "Cloud Messaging". Schauen Sie, wo "Serverschlüssel" steht und wenn kein langer Schlüssel angezeigt wird (nicht die Nummer "Absender-ID"), klicken Sie auf "Schlüssel neu generieren". Ein langer Schlüssel sollte jetzt angezeigt werden. Kopieren Sie diesen Schlüssel und platzieren Sie ihn in Ihrer Datei google-services.json unter : "api_key": [ {"current_key" : "key goes here"} ].

Diese Methode hat mir geholfen, während keiner der anderen gearbeitet hat. Hoffentlich hilft dies jemandem.

David Velasquez
quelle
2

Geben Sie hier die Bildbeschreibung ein

Klicken Sie auf Übersicht -> Zahnradsymbol -> Projekteinstellungen.

Geben Sie hier die Bildbeschreibung ein

Gehen Sie zu Neueste Konfiguration herunterladen und klicken Sie auf die Schaltfläche google-service.json, um die Datei herunterzuladen und im App-Ordner zu speichern und erneut zu kompilieren. Genießen!

Pinkesh Darji
quelle
2

Sie müssen Ihrem Projekt SHA-Zertifikat-Fingerabdrücke hinzufügen und dann die Datei google-services.jason erneut herunterladen, die automatisch "api_key": [{"current_key": "xxxxxx"}] enthalten sollte.

Auf der folgenden Seite können Sie sehen, wie Sie die Fingerabdrücke generieren:

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

Führen Sie unter Windows einfach den folgenden Befehl aus und verwenden Sie Android als Kennwort für Debug-Zwecke:

keytool -exportcert -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore
Hexise
quelle
1

Verwenden von Firebase

GoogleServices'. > Missing api_key/current_key object

Ich habe diesen Fehler erhalten, nachdem ich ein vorhandenes Projekt auf die neuen Firebase Services aktualisiert habe. Die generierte Datei google-service.json , die von der Seite mit den Firebase-Projekteinstellungen heruntergeladen wurde, enthielt nicht die api_keyerforderliche Datei .

Aus den anderen Antworten hier geht hervor, dass Google / Firebase Cloud Messaging (GCM / FCM) hinzugefügt werden muss, damit dies api_keyin die google-service.jsonDatei aufgenommen wird.

Daher habe ich vor dem erneuten Herunterladen der Datei Abhängigkeiten zum Firebase-FCM hinzugefügt, und diesmal war der Schlüssel enthalten.

FCM (GCM) einschließen

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

Wenn Sie die google-services.jsonDatei nicht neu konfigurieren und herunterladen möchten, können Sie den API-Schlüssel direkt von der Firebase-Konsole abrufen. Geh einfach zu

Übersicht> Weitere App hinzufügen> Web

Sie erhalten eine Konfiguration für Ihre Datenbank, die enthalten wird apiKey. Kopieren Sie einfach diesen Wert und platzieren Sie ihn in dem current_keyWert, der unten mit XXX gekennzeichnet ist

"api_key": [{ "current_key": "XXX" }]
Shakti
quelle
0

Für Firebase-Migratoren:

Stellen Sie sicher, dass Sie mindestens einen Fingerabdruck in Ihren Projekteinstellungen hinzugefügt haben, und laden Sie die Datei google-services.json erneut herunter

Su-Au Hwang
quelle
Danke Mann, ich habe die Anweisungen des Codelabors befolgt und zuerst keinen SHA1-Schlüssel hinzugefügt. Später musste ich hinzufügen, da mein ApiKey - CurrentKey fehlte. Ich bin mir nicht sicher, ob das der Fall war oder nicht. Aber es hat mein Problem gelöst.
Rana Ranvijay Singh
0

Wenn Sie Firebaes verwenden, müssen Sie serverKey von der Firebase in die Datei google-services.json kopieren

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

Um den Serverschlüssel zu erhalten, gehen Sie zu Projektübersicht> Projekteinstellungen> CloudMessaging> Kopieren ODER generieren und kopieren Sie den Serverschlüssel.

Tarun Voora
quelle
0

Fügen Sie dies in Ihre Datei google-service.json ein. Sie finden es unter app / google-service.json

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

Hamza Fareed
quelle