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?


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.


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": "" }]


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í


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.


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 ...


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.


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.


3

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



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.


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!


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

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

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" }]

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


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.


0

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

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.