Clé api_key / current manquante avec les services Google 3.0.0

157

Depuis que j'ai mis à niveau le projet avec la dernière version des services et bibliothèques Google (9.0.0), j'ai ce problème étrange:

Erreur de construction

Console de niveau:

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

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

build.gradle (application):

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'

Cependant, cela fonctionne bien avec les bibliothèques de services de lecture dans 8.4.0 et google-services 2.1.0

Avez-vous une idée de la solution?

palmier
la source
J'utilise des cartes et j'ai défini api_key dans le fichier AndroidManifest.xml. Avez-vous api_key là-bas? Quelque chose comme ça <meta-data android: name = "com.google.android.geo.API_KEY" android: value = "AIzaSdfdfdfdfdfdfdfdfdRVxThQsNaqY" />
Grzegorz Bielański
Oui je l'ai. Le Manifest est bien configuré, il a toujours fonctionné .. jusqu'à présent.
palmsnipe

Réponses:

162

Générez un nouveau fichier de configuration (google-services.json) à partir de: https://developers.google.com/cloud-messaging/android/client#get-config

Fichier de configuration nouvellement avec "api_key": [ { "current_key": XXX } ]dans la section client

Mettre à jour: ou service activé manuellement dans la console du développeur et générer la clé.

Jozka Jozin
la source
1
Nouvellement dans le fichier de configuration "api_key": [{"current_key": XXX}]
Jozka Jozin
1
Quelle clé API devrait y aller?
Marco Zanetti
8
Vous devez activer Cloud Messaging même si vous ne l'utilisez pas et générez un nouveau fichier json. Lorsque vous activez Cloud Messaging, vous obtenez la clé API dont vous avez besoin.
Rafael Gutiérrez
2
J'ai obtenu la clé API dans le fichier JSON en activant l'API Cloud Messaging "api_key": [{"current_key": "the_api_key"}], mais ne fonctionne toujours pas. Je ne sais pas vraiment ce qui ne va pas avec ça. : - /
Marco Zanetti
7
Qui sait à quoi sert cette api_key? Cela a bien fonctionné sans cela avant ...
Pavel Biryukov
89

L'ajout d'une valeur de clé actuelle vide dans le fichier google-services.json a résolu ce problème pour moi

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

Ajax - le Max
la source
1
Je pensais juste que j'ajouterais que la valeur "api_key" se trouve dans la valeur "client"
janvier
2
@Ajax -the Max: Cela a fonctionné pour moi aussi. Pourriez-vous être assez gentil pour expliquer pourquoi cela fonctionne?
Pineda
1
cela semble être la meilleure solution si vous utilisez l'ancienne messagerie cloud GMS. Le nouveau fichier de configuration exclut la clé GMS à la place en ajoutant Firebase.
GordonW
34

Oui, comme pour la première fois avec Firebase, je suis confronté à ça. Cliquez sur le menu de votre application et cliquez sur "Gérer".

entrez la description de l'image ici

vous pouvez télécharger à nouveau google-services.json.

entrez la description de l'image ici

Htoo Aung Hlaing
la source
2
oui je l'ai téléchargé à nouveau et c'était un fichier plus gros la prochaine fois et cela résout le problème pour moi
Hatem Badawi
1
Je peux confirmer: je me suis inscrit à Firebase Analytics et il a automatiquement téléchargé un google-services.json ne contenant aucune clé API. Ensuite, je l'ai téléchargé manuellement comme celui-ci et la clé API était dans le json.
chichilatte
Quelle est l'URL pour accéder à ce tableau de bord?
Sean Beach
9

Pour tous ceux qui ont ce problème, pour l'instant, vous devrez ajouter un service à votre application à l' adresse https://developers.google.com/cloud-messaging/android/client#get-config

Dans mon cas, j'ai ajouté admob (j'ai déjà des analyses et gcm), puis le fichier a été généré avec api_key.

Je pense que c'est un bug et sera bientôt corrigé, en attendant, faites-le.

Elvis Oliveira
la source
en effet, il y a un bug ... j'ai dû ajouter des invitations d'application aussi pour obtenir de nouveaux json
Jivraj S Shekhawat
salut, j'ai ajouté la nouvelle configuration, mais l'IDE se plaint toujours qu'il manque api_key
code
Avant d'ouvrir l'EDI, vous pouvez vérifier le fichier de configuration pour vous assurer qu'il y a s 'api_key' value. Clearly thereun bogue, nous devons donc essayer différentes approches pour résoudre le problème.
Elvis Oliveira
cela signifie-t-il qu'à chaque fois que j'ajoute une nouvelle dépendance dans mon fichier gradle, je dois télécharger un nouveau google-services.json car il génère un nouveau api_key?
Ashok Bijoy Debnath
8

Bien que la réponse acceptée de Jozka Jozin et ses commentaires, la messagerie cloud n'est ni liée ni requise.

Néanmoins, la régénération google-services.jsonest la clé de la solution (je l'ai donc voté). Voici ce que j'ai fait:

Comme vous le savez, vous pouvez générer le fichier de configuration pour Analytics à partir du guide des développeurs Google .

1: Choisissez votre application.

1) Choisissez une application

2: Fermez le popup! Ça cache ...

Fermez le popup!

3: L'OPTION D'ADMOB!

l'option cachée d'admob

4 : Bien sûr, sélectionnez et activez-le!

activez-le!

5: Maintenant, nous pouvons générer correctement des fichiers de configuration!

générer des fichiers de configuration

6: Nous l'avons fait! Cette fois, le fichier de configuration doit inclure correctement api_key .

on l'a fait!

Conclusion: L'interface utilisateur de l'outil de génération interactive est un peu déroutante ...

hata
la source
1
merci, j'ai pu obtenir la nouvelle configuration, mais l'IDE se plaint toujours qu'il manque api_key
code
Un peu déroutant ... C'est horrible !!! Félicitations pour votre explication claire.
Niels
7

Vous pouvez télécharger google-services.jsonà nouveau le fichier.

Étapes à suivre pour télécharger:

1). Cliquez sur le menu supérieur de votre application dans la Firebaseconsole.

2). Cliquez sur gérer.

3). Vous trouverez l' Download the latest configoption de fichier, téléchargez et remplacez le google-services.jsonfichier dans votre application.

Anubhav
la source
4

D'abord dans votre fichier JSON

Remplacer

"api_key": []

avec

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

Ensuite, la construction de gradle réussira, mais lorsque vous exécutez votre application, vous pouvez obtenir des erreurs comme celles-ci.

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

Pour résoudre ce problème, vous pouvez ajouter ce qui suit à votre fichier app.gradle .. Cela a fonctionné pour moi.

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

Edit: Cela m'a montré une erreur plus tard lors de la construction du fichier apk. J'ai donc dû télécharger à nouveau le fichier json. Après 2 essais, j'ai obtenu le fichier json avec une clé api valide.

Doge
la source
3

Si vous n'utilisez pas Firebase, le lien correct pour générer le fichier de configuration google-services.json se trouve en fait ici .

Phileo99
la source
2

J'ai pu résoudre ce problème avec ces étapes auxquelles on ne répond pas ici. Cette réponse n'active PAS Cloud Messaging, elle récupère uniquement sa clé de serveur.

Alors d'abord, allez dans Firebase Console, puis allez dans Paramètres du projet, puis cliquez sur l'onglet "Cloud Messaging". Regardez où il est écrit "clé du serveur" et s'il n'y a pas d'affichage de clé longue (pas le numéro "ID de l'expéditeur") cliquez sur "Régénérer la clé" et une clé longue devrait maintenant apparaître. Copiez cette clé et placez - le dans votre fichier google-services.json à: "api_key": [ {"current_key" : "key goes here"} ].

Cette méthode m'a aidé alors qu'aucun des autres ne fonctionnait, alors j'espère que cela aide quelqu'un.

David Velasquez
la source
2

entrez la description de l'image ici

Cliquez sur Vue d'ensemble -> Icône d'engrenage -> Paramètres du projet.

entrez la description de l'image ici

Accédez à Télécharger la dernière configuration et cliquez sur le bouton google-service.json pour télécharger le fichier et l'enregistrer dans le dossier de l'application et compiler à nouveau. Prendre plaisir!

Pinkesh Darji
la source
2

Vous devez ajouter des empreintes de certificat SHA à votre projet, puis télécharger à nouveau le fichier google-services.jason, qui doit contenir automatiquement "api_key": [{"current_key": "xxxxxx"}].

Vous pouvez afficher la page suivante pour voir comment générer les empreintes digitales:

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

Sous Windows, exécutez simplement la commande suivante et utilisez Android comme mot de passe à des fins de débogage:

keytool -exportcert -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore
Hexiser
la source
1

Utilisation de Firebase

GoogleServices'. > Missing api_key/current_key object

J'ai eu cette erreur après la mise à jour d'un projet existant vers les nouveaux services Firebase. Le fichier google-service.json généré téléchargé à partir de la page des paramètres du projet Firebase n'incluait pas les fichiers api_key.

D'après les autres réponses ici, il semble que Google / Firebase Cloud Messaging (GCM / FCM) doit être ajouté pour que cela api_keysoit inclus dans le google-service.jsonfichier.

J'ai donc ajouté une dépendance sur le firebase FCM avant de télécharger à nouveau le fichier, et cette fois la clé a été incluse.

Inclure FCM (GCM)

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

Si vous ne souhaitez pas reconfigurer et télécharger le google-services.jsonfichier, vous pouvez récupérer la clé api directement à partir de la console Firebase. Allez simplement à

Présentation> Ajouter une autre application> Web

Vous obtiendrez la configuration de votre base de données qui contiendra apiKey. Copiez simplement cette valeur et placez-la dans la current_keyvaleur indiquée par XXX ci-dessous

"api_key": [{ "current_key": "XXX" }]
Shakti
la source
0

Pour les migrateurs Firebase:

assurez-vous d'avoir ajouté au moins une empreinte digitale dans les paramètres de votre projet et téléchargez à nouveau le fichier google-services.json

Su-Au Hwang
la source
Merci mec, je suis allé selon les instructions du laboratoire de code et n'ai pas ajouté de clé SHA1 au début. Plus tard, j'ai dû ajouter comme ApiKey - CurrentKey manquait. Je ne sais pas si c'était le cas ou non. Mais cela a résolu mon problème.
Rana Ranvijay Singh
0

Si vous utilisez Firebaes, vous devez copier serverKey de Firebase vers le google-services.json

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

Pour obtenir la clé du serveur, accédez à Présentation du projet> Paramètres du projet> CloudMessaging> Copier OU générer et copier la clé de serveur.

Tarun Voora
la source
0

ajoutez-le dans votre fichier google-service.json. vous le trouverez sous app / google-service.json

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

Hamza Fareed
la source