Introducción
Como parte de la habilitación de las APIs de Google o los servicios de Firebase en tu dispositivo Android
app, es posible que debas agregar el complemento google-services
a tu
Archivo build.gradle
:
dependencies {
classpath 'com.google.gms:google-services:4.4.2'
// ...
}
El complemento google-services
tiene dos funciones principales:
- Procesa el archivo
google-services.json
y produce Android recursos que se pueden usar en la configuración código. Consulta Cómo agregar el archivo JSON para obtener más información. Agrega dependencias a las bibliotecas básicas necesarias para los servicios que tienes habilitado. En este paso, debes aplicar el complemento de Gradle para los servicios de Google en tu archivo
app/build.gradle
, de la siguiente manera:
apply plugin: 'com.google.gms.google-services'
Para ver el resultado de este paso, ejecuta
./gradlew :app:dependencies
Agrega el archivo JSON
Por lo general, el archivo google-services.json
se coloca en el
Directorio app/
(en la raíz del módulo de la app de Android Studio). Como
de la versión 2.2.0
, el complemento admite el tipo de compilación y la variante de producto.
archivos JSON específicos. Todas las estructuras de directorios siguientes son válidas:
// dogfood and release are build types. app/ google-services.json src/dogfood/google-services.json src/release/google-services.json ...
Nota: Proporcionar un archivo google-services.json en el directorio de la versión permite que te permita mantener un proyecto de Firebase independiente para tus APK de producción.
Cuando se usan las variantes de producto, estas estructuras de directorios más complejas son también son válidos.
// free and paid are product flavors. app/ google-services.json src/dogfood/paid/google-services.json src/release/free/google-services.json ...
Cómo procesar el archivo JSON
El archivo google-services.json
tiene la siguiente estructura básica:
{ "project_info": {...}, "client": [...], }
El objeto project_info
contiene información general sobre tu
proyecto, mientras que cada miembro del array client
contiene información
sobre los clientes (apps de Android) que agregaste al proyecto.
Cuando procesas el archivo JSON de tu app para Android, el complemento solo usa el
client
que coincida con el nombre de tu paquete (para la compilación actual)
tipo) según la siguiente lógica:
- Para cada miembro del array
client
:- Verifica el valor de
client_info/android_client_info/package_name
- Si el nombre del paquete coincide con este valor, muestra el objeto miembro.
- Verifica el valor de
- Si ninguno de los miembros de
client
coincide con el nombre del paquete, se arroja una excepción.
En el resto de este documento, usaremos {YOUR_CLIENT}
para hacer referencia a
el miembro del array client
determinado por el procedimiento anterior
El resultado principal del procesamiento de JSON es producir dos archivos XML que puedes hacer referencia como recursos de Android en tu código Java. Aquí tienes un ejemplo de cada archivo:
app/build/generated/res/google-services/{build_type}/values/values.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <! -- Present in all applications --> <string name="google_app_id" translatable="false">1:1035469437089:android:73a4fb8297b2cd4f</string> <! -- Present in applications with the appropriate services configured --> <string name="gcm_defaultSenderId" translatable="false">1035469437089</string> <string name="default_web_client_id" translatable="false">337894902146-e4uksm38sne0bqrj6uvkbo4oiu4hvigl.apps.googleusercontent.com</string> <string name="ga_trackingId" translatable="false">UA-65557217-3</string> <string name="firebase_database_url" translatable="false">https://example-url.firebaseio.com</string> <string name="google_api_key" translatable="false">AIzbSyCILMsOuUKwN3qhtxrPq7FFemDJUAXTyZ8</string> <string name="google_crash_reporting_api_key" translatable="false">AIzbSyCILMsOuUKwN3qhtxrPq7FFemDJUAXTyZ8</string> <string name="project_id" translatable="false">mydemoapp</string> </resources>
app/build/generated/res/google-services/{flavor}/{build_type}/xml/global_tracker.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="ga_trackingId" translatable="false">UA-65557218-3</string> </resources>
Cada valor de los archivos en formato XML está presente en el google-services.json
.
en las siguientes ubicaciones. Si tu proyecto de Android tiene algún archivo de configuración
que te impide usar el complemento google-services
, puedes
recrea de forma segura los archivos en formato XML manualmente con estos valores:
google_app_id:
{YOUR_CLIENT}/client_info/mobilesdk_app_id
gcm_defaultSenderId:
project_info/project_number
default_web_client_id:
{YOUR_CLIENT}/oauth_client/client_id (client_type == 3)
ga_trackingId:
{YOUR_CLIENT}/services/analytics-service/analytics_property/tracking_id
firebase_database_url:
project_info/firebase_url
google_api_key:
{YOUR_CLIENT}/api_key/current_key
google_crash_reporting_api_key:
{YOUR_CLIENT}/api_key/current_key
project_id:
project_info/project_id
Soluciona problemas
P: Durante la compilación, recibo el siguiente mensaje de error: "File Falta google-services.json en la carpeta raíz del módulo. Los servicios de Google El complemento no puede funcionar sin él".
R: Firebase console te ayudará
descarga el google-services.json
.
Además, las guías de inicio rápido para la mayoría de las APIs tienen instrucciones para
generando el archivo.
Una vez que hayas descargado el archivo google-services.json
, cópialo
en la carpeta app/
de tu proyecto de Android Studio
app/src/{build_type}
si usas varios tipos de compilación.
P.: No encuentro el símbolo "R.string.gcm_defaultSenderId", "R.xml.global_tracker", etcétera.
R: Asegúrate de que el nombre del paquete del archivo build.gradle
coincida con el
el nombre del paquete que ingresaste cuando creaste el google-services.json
. Si no lo sabes con certeza, vuelve a realizar el proceso de introducción y obtén
un nuevo archivo json.