Tasto api_key / chiave corrente mancante con Google Services 3.0.0


157

Da quando ho aggiornato il progetto con l'ultima versione dei servizi e delle librerie di Google (9.0.0), ho questo strano problema:

Build di errore

Console di livello:

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

Tuttavia, funziona bene con le librerie dei servizi di gioco in 8.4.0 e google-services 2.1.0

Hai idea della soluzione?


Sto usando le mappe e ho api_key definito nel file AndroidManifest.xml. Hai api_key lì? Qualcosa del genere <meta-data android: name = "com.google.android.geo.API_KEY" android: value = "AIzaSdfdfdfdfdfdfdfdfdfdRVxThQsNaqY" />
Grzegorz Bielański,

Si cel'ho. Il Manifest è ben configurato, ha sempre funzionato .. fino ad ora.
palmsnipe,

Risposte:


162

Genera nuovo file di configurazione (google-services.json) da: https://developers.google.com/cloud-messaging/android/client#get-config

File di nuova configurazione con "api_key": [ { "current_key": XXX } ]nella sezione client

Aggiornamento: o servizio abilitato manualmente nella console per sviluppatori e generare chiave.


1
Recentemente è nel file conf "api_key": [{"current_key": XXX}]
Jozka Jozin,

1
Quale chiave API dovrebbe andare lì?
Marco Zanetti,

8
È necessario abilitare il Cloud Messaging anche se non lo si utilizza e si genera un nuovo file json. Quando si abilita il Cloud Messaging, si ottiene la chiave API necessaria per questo.
Rafael Gutiérrez,

2
Ho ottenuto la chiave API nel file JSON abilitando l'API di messaggistica cloud "api_key": [{"current_key": "the_api_key"}], ma continua a non funzionare. Non so davvero cosa ci sia di sbagliato. : - /
Marco Zanetti,

7
Chi sa a cosa serve questo api_key? Ha funzionato bene senza di essa prima ...
Pavel Biryukov il

89

L'aggiunta di un valore chiave corrente vuoto nel file google-services.json ha risolto questo problema per me

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


1
Ho pensato di aggiungere che il valore "api_key" è all'interno del valore di "cliente"
gen

2
@Ajax -il Max: ha funzionato anche per me. Potresti essere così gentile da spiegare perché questo funziona?
Pineda,

1
questa sembra la soluzione migliore se si utilizza la vecchia messaggistica cloud GMS. Il nuovo file di configurazione esclude la chiave GMS invece di aggiungere Firebase.
GordonW,

34

Sì, come per la prima volta che utilizzo con Firebase, mi trovo così. Fai clic sul menu dell'app e fai clic su "Gestisci".

inserisci qui la descrizione dell'immagine

puoi scaricare di nuovo google-services.json.

inserisci qui la descrizione dell'immagine


2
sì, l'ho scaricato di nuovo ed è stato un file più grande la prossima volta e questo risolve il problema per me
Hatem Badawi,

1
Posso confermare: mi sono registrato a Firebase Analytics e ha scaricato automaticamente un google-services.json senza chiave API. Quindi l'ho scaricato manualmente in questo modo e la chiave API era nel json.
Chichilatte,

Qual è l'URL per accedere a questa dashboard?
Sean Beach,

9

Per tutti coloro che hanno questo problema, per ora, dovrai aggiungere qualsiasi servizio alla tua app all'indirizzo https://developers.google.com/cloud-messaging/android/client#get-config

Nel mio caso ho aggiunto admob (ho già analytics e gcm) e quindi il file è stato generato con api_key.

Penso che sia un bug e che presto verrà risolto, fino a quando, fallo.


in effetti c'è un bug ... ho dovuto aggiungere anche inviti per app per ottenere nuovo json
Jivraj S Shekhawat

ciao, ho aggiunto la nuova configurazione, ma l'IDE si sta ancora lamentando della mancanza di api_key
codice

Prima di aprire l'IDE è possibile controllare il file di configurazione per assicurarsi che ci s 'api_key' value. Clearly theresia un bug, quindi dobbiamo provare diversi approcci per risolvere il problema.
Elvis Oliveira,

significa che, ogni volta che aggiungo una nuova dipendenza nel mio file gradle, devo scaricare un nuovo google-services.json poiché genera un nuovo api_key?
Ashok Bijoy Debnath,

8

Sebbene la risposta accettata di Jozka Jozin e i suoi commenti, Cloud Messaging non sia correlato né richiesto.

Tuttavia, la rigenerazione google-services.jsonè la chiave della soluzione (quindi l'ho votato). Di seguito è quello che ho fatto:

Come sai, puoi generare il file di configurazione per Analytics dalla Guida per gli sviluppatori di Google .

1: scegli la tua app.

1) scegli un'app

2: Chiudi il popup! Si nasconde ...

Chiudi il popup!

3: L'OPZIONE DI ADMOB!

l'opzione nascosta di admob

4 : Naturalmente, selezionalo e abilitalo!

abilitalo!

5: Ora possiamo giustamente generare file di configurazione!

generare file di configurazione

6: ce l'abbiamo fatta! Questa volta, il file di configurazione dovrebbe includere in modo appropriato il tasto api_key .

Ce l'abbiamo fatta!

Conclusione: l'interfaccia utente dello strumento di generazione interattiva è un po 'confusa ...


1
grazie, sono stato in grado di ottenere la nuova configurazione, ma l'IDE si sta ancora lamentando della mancanza di api_key
codice

Un po ' confuso ... È orribile !!! Complimenti per la tua chiara spiegazione.
Niels,

7

È possibile scaricare di google-services.jsonnuovo il file.

Passaggi per il download:

1). Fai clic sul menu principale dell'app nella FirebaseConsole.

2). Clicca su gestisci.

3). Troverai l' Download the latest configopzione di file, scarica e sostituisci il google-services.jsonfile nella tua applicazione.


4

Prima nel tuo file JSON

Sostituire

"api_key": []

con

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

Quindi la compilazione gradle avrà esito positivo ma quando si esegue l'applicazione è possibile che vengano visualizzati errori come i seguenti:

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

Per risolvere questo problema, puoi aggiungere quanto segue al tuo file app.gradle. Ha funzionato per me.

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

Modifica: mi ha mostrato qualche errore in seguito durante la creazione del file apk. Quindi ho dovuto scaricare di nuovo il file json. Dopo 2 prove ho ottenuto il file json con una chiave API valida.


3

Se non si utilizza Firebase, il collegamento corretto per generare il file di configurazione google-services.json si trova effettivamente qui .



2

Sono stato in grado di risolvere questo problema con questi passaggi a cui non si risponde qui. Questa risposta NON abilita il Cloud Messaging, sta solo recuperando la sua chiave del server.

Quindi, prima vai su Firebase Console, quindi su Impostazioni progetto, quindi fai clic sulla scheda "Cloud Messaging". Guarda dove dice "chiave del server" e se non viene visualizzata una chiave lunga (non il numero "ID mittente") fai clic su "Rigenera chiave" e ora dovrebbe essere visualizzata una chiave lunga. Copiare la chiave e inserirlo nel file google-services.json a: "api_key": [ {"current_key" : "key goes here"} ].

Questo metodo mi ha aiutato mentre nessuno degli altri stava lavorando, quindi spero che questo aiuti qualcuno.


2

inserisci qui la descrizione dell'immagine

Fai clic su Panoramica -> Icona a forma di ingranaggio -> Impostazioni progetto.

inserisci qui la descrizione dell'immagine

Vai a Scarica l'ultima configurazione e fai clic sul pulsante google-service.json per scaricare il file e salvarlo nella cartella dell'app e compilare di nuovo. Godere!


2

È necessario aggiungere le impronte digitali del certificato SHA al progetto e quindi scaricare nuovamente il file google-services.jason, che dovrebbe contenere "api_key": [{"current_key": "xxxxxx"}] automaticamente.

È possibile visualizzare la pagina seguente per vedere come generare le impronte digitali:

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

Su Windows, esegui semplicemente il seguente comando e usa android come password a scopo di debug:

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

1

Utilizzando Firebase

GoogleServices'. > Missing api_key/current_key object

Ho riscontrato questo errore dopo aver aggiornato un progetto esistente con i nuovi servizi Firebase. Il file google-service.json generato scaricato dalla pagina delle impostazioni del progetto Firebase non includeva il api_keynecessario.

Dalle altre risposte qui sembra che Google / Firebase Cloud Messaging (GCM / FCM) debba essere aggiunto per api_keypoter essere incluso nel google-service.jsonfile.

Quindi ho aggiunto delle dipendenze sul Firebase FCM prima di scaricare di nuovo il file, e questa volta la chiave è stata inclusa.

Includi FCM (GCM)

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

1

Se non si desidera riconfigurare e scaricare il google-services.jsonfile, è possibile recuperare la chiave API direttamente dalla console di Firebase. Vai a

Panoramica> Aggiungi un'altra app> Web

Otterrai la configurazione per il tuo database che conterrà apiKey. Basta copiare quel valore e posizionarlo nel current_keyvalore indicato da XXX sotto

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

0

Per i migranti firebase:

assicurati di aver aggiunto almeno un'impronta digitale nelle impostazioni del tuo progetto e scarica nuovamente il file google-services.json


Grazie amico, sono andato secondo le istruzioni del laboratorio di codice e all'inizio non ho aggiunto la chiave SHA1. Più tardi ho dovuto aggiungere come ApiKey - CurrentKey mancava. Non sono sicuro se fosse così o no. Ma ha risolto il mio problema.
Rana Ranvijay Singh,

0

Se stai usando i firebaes, devi copiare serverKey dal firebase a google-services.json

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

Per ottenere la chiave del server, vai a ProjectOverview> Impostazioni progetto> CloudMessaging> Copia O genera e copia server Chiave ..


0

aggiungilo nel tuo file google-service.json. lo troverai in app / google-service.json

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.