services google android json google-analytics google-play-services google-cloud-messaging

android - ¿Qué hace realmente google-services.json?



google-services.json download (3)

Trabajo en agregar servicios de Google Analytics y GCM a mi aplicación actual. En la guía para la implementación de ambos servicios, google le pide al desarrollador que genere un archivo json: google-services.json y lo coloque en el directorio raíz de la aplicación.

Descubrí que incluso si elimino este archivo json de mi aplicación, los servicios aún funcionan.

Solo quiero saber con certeza, ¿para qué es realmente este archivo? ¿Cuál es su uso y cómo funciona?


Agregue google-services.json a su módulo y realice una LIMPIEZA y una RECONSTRUCCIÓN. Se generará un archivo xml en app / build / generate / res / google-services / debug / values ​​/ values.xml con las propiedades de su proyecto y podrá acceder fácilmente como una cadena xml normal. Ejemplo:

String serverClientId = getString(R.string.default_web_client_id);

hay una lista con todas las cadenas y más información en google-service.json doc


Investigué un poco sobre el complemento de servicios de google y json y encontré las fuentes de este complemento.

Lo primero es lo primero

¡Los servicios de Google del complemento gradle a los que hace referencia classpath y con apply son solo un complemento de tiempo de compilación! Por lo tanto, solo influye en el proceso de compilación de su aplicación, ¡pero no en el proceso de ejecución!

Este complemento solo sirve como ayuda rápida para la integración rápida de los servicios de Google en su aplicación. Obviamente, el proceso es algo complicado y no está documentado, por lo que Google debería haber dejado en claro qué hace este proceso.

De hecho, encontré el código fuente de la versión del complemento com.google.gms: google-services: 1.4.0-beta3 y no encontré ninguna referencia específica sobre las invitaciones ni encontré ninguna API de Google para las Invitaciones a aplicaciones. (Pero tal vez solo usa un proyecto API genérico con su ID de proyecto, no probé esto)

Que hace

El complemento gradle de google-services busca el mencionado archivo google-services.json en su módulo de aplicación. Luego busca configuraciones configuradas como project-id''s y tracking-id''s y otras, generadas por la consola del desarrollador de la API de Google en el archivo google-services.json. A partir de la configuración que encontró, los valores de recursos de Android se generan en la siguiente ruta:

$project.buildDir/generated/res/google-services/$variant.dirName/values/values.xml

Por ejemplo, para una compilación de depuración de su aplicación:

app/build/generated/res/google-services/debug/values/values.xml

Por ejemplo, si siguió el tutorial de GCM, el archivo JSON incluiría la identificación del proyecto API como el siguiente recurso de Android:

<string name="gcm_defaultSenderId">project-id</string>

Por lo tanto, este complemento y el archivo JSON no son esenciales para ejecutar o publicar su aplicación, es solo una ayuda de inicio rápido para generar algunos archivos básicos de recursos de Android para una integración más fácil de las características específicas de la API de Google.

Observe en el código fuente al que se hace referencia a continuación que el complemento de servicios de Google siempre genera esos recursos de Android para cada variante de aplicación que se define en su aplicación / build.gradle.

Si no desea eso, debe usar esos recursos generados en las variantes de aplicación que desee y eliminar los demás. No olvide eliminar el complemento de servicios de google que se aplica desde app / build.gradle, o de lo contrario se regenerará para todas las variantes de la aplicación.

Lo que no hace

¡Este complemento y archivo JSON NO influyen directamente en el funcionamiento interno de dichas funciones de Google para su aplicación! Si ya ha seguido tutoriales anteriores en developer.android.com sobre cómo integrar, por ejemplo, GCM o Google Analytics, ¡ni siquiera necesita integrar ni el servicio gradle-plugin google-services ni el archivo google-services.json!

Aviso sobre dónde encontré las fuentes

Después de integrar el complemento de gradle de google-services y cuando sincroniza su proyecto, Gradle descarga automáticamente la dependencia de google-services a una ruta similar a esta (en Windows, es posible que deba buscar en su hogar / .gradle para Linux):

C:/Users/user/.gradle/caches/modules-2/files-2.1/com.google.gms/google-services/1.4.0-beta3/f1580f62e3be313eba041ce19b64fd3f44cf8951/google-services-1.4.0-beta3-sources.jar

Si extrae este archivo jar, encontrará dos archivos:

GoogleServicesPlugin.groovy GoogleServicesTask.java

que contienen el código fuente simple del complemento gradle.

GoogleServicesPlugin.groovy

contiene el manejo de las variantes de la aplicación y las definiciones básicas de rutas, etc.

GoogleServicesTask.java

contiene la definición de tarea real, busque el siguiente método para ver lo que realmente hace:

@TaskAction public void action() throws IOException {


Para qué es realmente este archivo:

google-services.json contiene credenciales de desarrollador y ajustes de configuración, que son necesarios para verificar mientras se conecta con GoogleApiClient. Aunque su servicio funciona bien con su dispositivo de prueba, ya que detecta su cuenta de desarrollador, pero después de lanzar su aplicación en público, no funcionará sin el archivo json. Así que no lo borres.

La documentación oficial dice:

La aplicación crea un GoogleApiClient, que especifica a qué ámbitos y API accederá la aplicación. Cuando GoogleApiClient se conecta, el usuario inicia sesión.

Vea la sección de cómo funciona .