studio services play google gms android google-maps android-gradle google-play-services google-services-json

android - play - Falta la clave api_key/actual con Google Services 3.0.0 y la clave de Maps API en build.gradle



google-< services json (6)

mi problema es bastante similar a la falta de una clave / clave actual con Google Services 3.0.0 pero con un mayor nivel de complejidad.

Actualicé mi aplicación esta mañana a com.google.gms: google-services: 3.0.0 y todas las dependencias de juegos-servicios 9.0.0

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

Ahora recibo el infame error

Error: ejecución fallida para la tarea '': hotelsclick: processDebugGoogleServices''. > Falta el objeto api_key / current_key

Esto parece ser debido a una clave API faltante en el archivo google-services.json (así me dijeron). Obtuve una nueva clave de API en https://developers.google.com/cloud-messaging/android/client#get-config y encontré el siguiente campo en ella.

"api_key": [],

Creo que debería poner mi clave API de Google Maps allí, pero aquí viene el doble problema que estoy experimentando:

1- Si intento poner la llave dentro de ese campo, no funciona. Lo intenté con ambos

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

y

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

el error sigue siendo el mismo

2- He estado usando gradle para usar la construcción dinámica. Puse lo siguiente en mi módulo build.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'' } }

En el archivo Androidmanifest.xml tengo

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

Ahora, siempre ha estado funcionando hasta que actualicé a Google Services 3.0.0, no entiendo por qué no funciona ahora. ¿No debería tomar la clave API correcta del archivo build.gradle compilado y ponerlo en el manifiesto?

Así que mi doble pregunta es: ¿por qué la búsqueda dinámica de claves API ya no funciona? ¿Y cómo puedo solucionar esto?

Gracias


¿Has intentado poner una "current_key" vacía de la siguiente manera:

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

Vea cómo va eso.

EDIT: Debes reemplazar "api_key": [] (ubicado en "client" ) con "api_key": [{"current_key": ""}]


Debe habilitar Cloud Messaging incluso si no lo usa y genera un nuevo archivo json. Cuando habilitas la mensajería en la nube, obtienes la clave API que necesita.

Tal vez necesites otro servicio, mira esto: https://.com/a/37358432/4408810


En Android Studio , existe el concepto de tipos y sabores de compilación y puede usarlos para obtener lo que necesita. Los tipos de compilación son versiones diferentes de la aplicación que son funcionalmente idénticas pero pueden diferir en el código de depuración. Por defecto, todos los proyectos de Android Gradle tienen tipos de compilación de depuración y versión.

Además, puede agregar actividad de Google Maps a su proyecto y Android Studio generará los archivos necesarios para usted, solo debe insertar sus keys .

Como está usando gradle, puede hacer lo siguiente:

build.gradle

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 esta forma, solo tienes un AndroidManifest.xml y estableces un valor en función de tu tipo de compilación.

También puede consultar este marcador de posición manifiesto: http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger#TOC-Placeholder-support


Este problema que enfrentará después de usar la nueva herramienta de compilación classpath ''com.google.gms:google-services:3.0.0'' ,

Simplemente recree su "google-services.json". se resolverá con suerte.


Pude resolver este problema con estos pasos que no se responden aquí. Esta respuesta NO habilita la mensajería en la nube, solo recupera su clave de servidor. (Aclarando porque mi respuesta fue eliminada por ser un ''duplicado'' cuando no es para nada).

Primero, vaya a Firebase Console y luego vaya a Configuración del proyecto y luego haga clic en la pestaña "Mensajes en la nube". Mire donde dice "clave del servidor" y si no aparece ninguna clave larga (no el número de "Id. Del remitente"), haga clic en "Regenerar clave" y se mostrará una clave larga. Copie esa clave y colóquela en su archivo 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.


Si eliminó accidentalmente la clave o no puede recuperarla, cree una nueva credencial de API here y asígnele el nombre exactamente "clave de Android (creada automáticamente por el servicio de Google)". Esto le devolverá su credencial al servicio de google json.