Clé d'api manquante / clé courante manquante avec Google Services 3.0.0 et clé D'API de Maps dans build.gradle

mon problème est assez similaire à api_key manquant/clé courante avec les services Google 3.0.0 , mais avec un autre niveau de complexité.

j'ai mis à jour mon application ce matin sur com.Google.GMS: google-services: 3.0.0 et tous les jeux - services 9.0.0 dépendances

compile 'com.google.android.gms:play-services-analytics:9.0.0'
compile 'com.google.android.gms:play-services-ads:9.0.0'
compile 'com.google.android.gms:play-services-identity:9.0.0'
compile 'com.google.android.gms:play-services-gcm:9.0.0'

maintenant j'obtiens l'erreur infâme

erreur: L'exécution a échoué pour la tâche': hotelsclick: processDebugGoogleServices'. > Objet api_key/current_key manquant

cela semble être dû à une clé D'API manquante dans les services google.fichier json (donc on m'a dit). J'ai une nouvelle clé API de https://developers.google.com/cloud-messaging/android/client#get-config et y a trouvé le champ suivant.

  "api_key": [],

je suppose que je devrais mettre ma clé D'API Google Maps là-dedans, Mais voici le double problème que je rencontre:

1-si j'essaie de mettre la clé dans ce champ, ça ne marche pas. J'ai essayé avec les deux

  "api_key": [{ "current_key": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-AE" }],

et

  "api_key": ["XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-AE"],

l'erreur reste la même.

2-j'ai utilisé gradle afin d'utiliser la construction dynamique. J'ai mis ce qui suit dans ma construction de module.gradle:

buildTypes {
    release {
        minifyEnabled true
        shrinkResources true
        debuggable false
        resValue "string", "google_maps_api_key", "ABCDEFGHILMNO... my maps release API key"
        proguardFiles getDefaultProguardFile('proguard-android.txt'),
                'proguard-rules.pro'
        zipAlignEnabled true
    }
    debug {
        resValue "string", "google_maps_api_key", "ZNTMRNCDNR... my google maps debug API key"
        debuggable true
        proguardFiles getDefaultProguardFile('proguard-android.txt'),
                'proguard-rules.pro'
    }
}

dans L'Androidmanifest.fichier xml j'ai

    <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="@string/google_maps_api_key" />

maintenant, ça a toujours marché jusqu'à ce que je mette à jour vers Google Services 3.0.0, Je ne comprends pas pourquoi cela ne fonctionne pas maintenant. Il ne devrait pas prendre la bonne clé D'API de la compilation compilée.gradle fichier et le mettre dans le manifeste?

alors ma double question est: pourquoi la récupération dynamique de la clé API ne fonctionne-t-elle plus? Et comment puis-je résoudre ce problème?

Merci

35
demandé sur Community 2016-05-19 16:39:26

6 réponses

Avez-vous essayé de mettre un vide "current_key" comme suit:

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

voyez comment ça se passe.

EDIT: Vous devez remplacer "api_key": [] (situé dans "client ) par "api_key": [{"current_key": "" }]

71
répondu Nitrodbz 2018-05-17 09:14:23

j'ai pu résoudre ce problème avec ces étapes qui ne sont pas répondues ici. Cette réponse n'active pas la messagerie Cloud, elle ne fait que récupérer la clé de son serveur. (Clarification parce que ma réponse a été supprimée parce qu'elle est une "copie" alors qu'elle ne l'est pas du tout).

tout d'abord, allez sur la Console Firebase, puis allez dans les paramètres du projet, puis cliquez sur L'onglet"messagerie Cloud". Regardez où il est dit "clé du serveur" et s'il n'y a pas de clé longue affichant (pas le " Sender ID" nombre) cliquez sur "Régénérer la clé" et une clé longue devrait maintenant apparaître. Copiez cette clé et placez-la dans vos services google.dossier json: "api_key": [ {"current_key" : "key goes here"} ] .

cette méthode m'a aidé pendant qu'aucun des autres ne travaillait, donc j'espère que cela aide quelqu'un.

9
répondu David Velasquez 2016-10-04 16:16:11

ce problème que vous rencontrerez après avoir utilisé un nouvel outil de construction classpath 'com.google.gms:google-services:3.0.0' ,

il suffit de recréer vos" services google.json". il sera résolu je l'espère.

4
répondu Sadman Samee 2016-05-19 18:24:25

si vous avez accidentellement retiré la clé ou si vous ne pouvez pas la récupérer, créez un nouveau justificatif d'api ici et nommez-le exactement"clé Android (auto créé par Google Service)". Cela vous permettra de récupérer votre justificatif d'identité auprès de google-services json.

1
répondu droidpl 2016-06-15 10:28:26

dans Android Studio , Il ya le concept de types de construction et les saveurs et vous pouvez les utiliser pour obtenir ce dont vous avez besoin. Les types de construction sont différentes versions de l'application qui sont fonctionnellement identiques mais peuvent différer dans le code de débogage. Par défaut, tous les projets Gradle Android ont des types de construction debug et release.

en outre, vous pouvez ajouter activité Google Maps à votre projet et Android Studio va générer nécessaire dossiers pour vous, vous devez seulement insérer vos clés .

puisque vous utilisez gradle, vous pouvez faire ce qui suit:

"1519160920 de construire".Grad

android {
.. .. ...
buildTypes {
debug {
resValue "string", "google_maps_api_key", "[YOUR DEV KEY]"
}
release {
resValue "string", "google_maps_api_key", "[YOUR PROD KEY]"
}
}
}

AndroidManifest.xml

meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="@string/google_maps_api_key"/>

de cette façon, vous n'avez qu'un Androïdmanifest.xml et vous définissez la valeur en fonction de votre construction type.

vous pouvez aussi vérifier ce paramètre du Manifeste: http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger#TOC-Placeholder-support

0
répondu Android Enthusiast 2016-05-20 11:34:46

vous devez activer la messagerie Cloud même si vous ne l'utilisez pas et générer un nouveau fichier json. Lorsque vous activez la messagerie Cloud, vous obtenez la clé API need it pour cela.

peut-être que vous avez besoin d'un autre service, voir ceci: https://stackoverflow.com/a/37358432/4408810

0
répondu Rafael Gutiérrez 2017-05-23 12:34:25