Falta api_key / clave actual con Google Services 3.0.0

157

Desde que actualicé el proyecto con la última versión de los servicios y bibliotecas de google (9.0.0), tengo este extraño problema:

Error de compilación

Consola de grado:

: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 (aplicación):

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'

Sin embargo, funciona bien con las bibliotecas de servicios de reproducción en 8.4.0 y google-services 2.1.0

¿Tienes alguna idea de la solución?

palmsnipe
fuente
Estoy usando mapas y tengo una clave api_key definida en el archivo AndroidManifest.xml. ¿Tienes api_key allí? Algo así <meta-data android: name = "com.google.android.geo.API_KEY" android: value = "AIzaSdfdfdfdfdfdfdfdfdRVxThQsNaqY" />
Grzegorz Bielański
Si, lo tengo. El Manifiesto está bien configurado, siempre funcionó ... hasta ahora.
palmsnipe

Respuestas:

162

Genere un nuevo archivo de configuración (google-services.json) de: https://developers.google.com/cloud-messaging/android/client#get-config

Nuevo archivo de configuración con "api_key": [ { "current_key": XXX } ]en la sección del cliente

Actualización: o servicio habilitado manualmente en la consola del desarrollador y generar clave.

Jozka Jozin
fuente
1
Recientemente está en el archivo de configuración "api_key": [{"current_key": XXX}]
Jozka Jozin
1
¿Qué clave API debería ir allí?
Marco Zanetti
8
Debe habilitar Cloud Messaging incluso si no lo usa y genera un nuevo archivo json. Cuando habilita Cloud Messaging, obtiene la clave API que la necesita.
Rafael Gutiérrez
2
Obtuve la clave API en el archivo JSON habilitando la API de Cloud Messaging "api_key": [{"current_key": "the_api_key"}], pero aún no funciona. Realmente no sé qué tiene de malo. : - /
Marco Zanetti
77
¿Quién sabe para qué sirve esta api_key? Funcionó bien sin él antes ...
Pavel Biryukov
89

Agregar un valor de clave actual vacío en el archivo google-services.json resolvió este problema para mí

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

Ajax -the Max
fuente
1
Solo pensé agregar que el valor "api_key" está dentro del valor "cliente"
Jan
2
@Ajax -the Max: Esto también funcionó para mí. ¿Podría ser tan amable de explicar por qué esto funciona?
Pineda
1
Esta parece ser la mejor solución si se utiliza la antigua mensajería en la nube GMS. El nuevo archivo de configuración excluye la clave GMS en lugar de agregar Firebase.
GordonW
34

Sí, como por primera vez con Firebase, me enfrento así. Haga clic en el menú de su aplicación y haga clic en "Administrar".

ingrese la descripción de la imagen aquí

puedes descargar google-services.json nuevamente.

ingrese la descripción de la imagen aquí

Htoo Aung Hlaing
fuente
2
Sí, lo descargué nuevamente y la próxima vez era un archivo más grande y esto solucionó el problema para mí
Hatem Badawi
1
Puedo confirmar: me inscribí en Firebase Analytics y automáticamente descargó un google-services.json que no contiene ninguna clave API. Luego lo descargué manualmente de esta manera y la clave API estaba en el json.
chichilatte
¿Cuál es la URL para llegar a este panel?
Sean Beach el
9

Para todos los que tienen este problema, por ahora, deberá agregar cualquier servicio a su aplicación en https://developers.google.com/cloud-messaging/android/client#get-config

En mi caso, agregué admob (ya tengo análisis y gcm) y luego el archivo se generó con api_key.

Creo que es un error y pronto se solucionará, hasta que lo hagas.

Elvis Oliveira
fuente
de hecho hay un error ... tuve que agregar invitaciones a la aplicación también para obtener nuevos json
Jivraj S Shekhawat
hola, agregué la nueva configuración, pero el IDE todavía se queja de que falta api_key
código
Antes de abrir el IDE, puede verificar el archivo de configuración para asegurarse de que haya s 'api_key' value. Clearly thereun error, por lo que debemos probar diferentes enfoques para resolver el problema.
Elvis Oliveira
¿eso significa que cada vez que agrego una nueva dependencia en mi archivo gradle, tengo que descargar un nuevo google-services.json ya que genera una nueva api_key?
Ashok Bijoy Debnath
8

Aunque la respuesta aceptada de Jozka Jozin y sus comentarios, Cloud Messaging no está relacionado ni es obligatorio.

Sin embargo, la regeneración google-services.jsones la clave de la solución (así que lo voté). A continuación se muestra lo que hice:

Como sabe, puede generar el archivo de configuración para Analytics en la Guía para desarrolladores de Google .

1: elige tu aplicación.

1) elige una aplicación

2: ¡Cierra la ventana emergente! Se esconde ...

¡Cierra la ventana emergente!

3: ¡ LA OPCIÓN DE ADMOB!

la opción oculta de admob

4 : Por supuesto, ¡selecciónalo y habilítalo!

¡permitirle!

5: ¡Ahora podemos generar correctamente archivos de configuración!

generar archivos de configuración

6: ¡Lo logramos! Esta vez, el archivo de configuración debe incluir la api_key adecuadamente.

¡lo hicimos!

Conclusión: la interfaz de usuario de la herramienta de generación interactiva es un poco confusa ...

hata
fuente
1
gracias, pude obtener la nueva configuración, pero el IDE aún se queja de que falta api_key
código
Un poco confuso ... ¡Es horrible! Felicitaciones por su explicación clara.
Niels
7

Puede descargar el google-services.jsonarchivo nuevamente.

Pasos para descargar:

1) Haga clic en el menú superior de su aplicación en la Firebaseconsola.

2) Haga clic en administrar.

3) Encontrará Download the latest configla opción de archivo, descargará y reemplazará el google-services.jsonarchivo en su aplicación.

Anubhav
fuente
4

Primero en tu archivo JSON

Reemplazar

"api_key": []

con

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

Entonces la construcción de Gradle será exitosa, pero cuando ejecute su aplicación, puede obtener errores como los siguientes ...

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

Para solucionar este problema, puede agregar lo siguiente a su archivo app.gradle. Funcionó para mí.

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

Editar: me mostró un error más tarde al construir el archivo apk. Así que tuve que descargar el archivo json nuevamente. Después de 2 pruebas, obtuve el archivo json con una clave de API válida.

Dux
fuente
3

Si no está utilizando Firebase, el enlace correcto para generar el archivo de configuración google-services.json se encuentra aquí .

Phileo99
fuente
2

regenere google-services.json en https://developers.google.com/cloud-messaging/android/client#get-config , una cosa importante es que debe habilitar Cloud Messaging en el paso "Elegir servicios" , abra el nuevo google -servicios.json archivo verá palabras como

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

sin estas palabras o sin el valor de current_key no es el archivo correcto

dx3906
fuente
2

Pude resolver este problema con estos pasos que no se responden aquí. Esta respuesta NO está habilitando Cloud Messaging, solo está recuperando su clave de servidor.

Primero, vaya a Firebase Console, luego vaya a Configuración del proyecto y luego haga clic en la pestaña "Mensajería en la nube". Mire donde dice "clave de servidor" y si no se muestra una clave larga (no el número de "Id. Del remitente") haga clic en "Regenerar clave" y ahora debería aparecer una clave larga. Copiar esa clave y lo coloca en el archivo de Google-services.json en: "api_key": [ {"current_key" : "key goes here"} ].

Este método me ayudó mientras ninguno de los otros funcionaba, así que espero que esto ayude a alguien.

David Velásquez
fuente
2

ingrese la descripción de la imagen aquí

Haga clic en Descripción general -> Icono de engranaje -> Configuración del proyecto.

ingrese la descripción de la imagen aquí

Vaya a Descargar la última configuración y haga clic en el botón google-service.json para descargar el archivo y guardarlo en la carpeta de la aplicación y compilar nuevamente. ¡Disfrutar!

Pinkesh Darji
fuente
2

Debe agregar las huellas digitales del certificado SHA a su proyecto y luego descargar el archivo google-services.jason nuevamente, que debe contener "api_key": [{"current_key": "xxxxxx"}] automáticamente.

Puede ver la siguiente página para ver cómo generar las huellas digitales:

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

En Windows, simplemente ejecute el siguiente comando y use Android como contraseña para la depuración:

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

Usando Firebase

GoogleServices'. > Missing api_key/current_key object

Recibí este error después de actualizar un proyecto existente a los nuevos servicios de Firebase. El archivo generado google-service.json descargado de la página de configuración del proyecto firebase no incluía lo api_keynecesario.

De las otras respuestas aquí parece que Google / Firebase Cloud Messaging (GCM / FCM) necesita agregarse para que esto api_keyse incluya en el google-service.jsonarchivo.

Así que agregué unas dependencias en Firebase FCM antes de descargar el archivo nuevamente, y esta vez se incluyó la clave.

Incluir FCM (GCM)

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

Si no desea reconfigurar y descargar el google-services.jsonarchivo, puede obtener la clave de API directamente desde la consola de Firebase. Solo ve a

Descripción general> Agregar otra aplicación> Web

Obtendrá la configuración de su base de datos que contendrá apiKey. Simplemente copie ese valor y colóquelo en el current_keyvalor indicado por XXX a continuación

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

Para los migradores de firebase:

asegúrese de haber agregado al menos una huella digital en la configuración de su proyecto y vuelva a descargar el archivo google-services.json

Su-Au Hwang
fuente
Gracias hombre, seguí las instrucciones del laboratorio de códigos y al principio no agregué la clave SHA1. Más tarde tuve que agregar ya que faltaba mi ApiKey - CurrentKey. No estoy seguro si ese fue el caso o no. Pero resolvió mi problema.
Rana Ranvijay Singh
0

Si está utilizando firebaes, debe copiar serverKey desde firebase a google-services.json

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

Para obtener la clave del servidor, vaya a Descripción general del proyecto> Configuración del proyecto> CloudMessaging> Copiar O generar y copiar la clave del servidor.

Tarun Voora
fuente
0

agregue esto a su archivo google-service.json. lo encontrará en app / google-service.json

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

Hamza Fareed
fuente