Qué hace Google-servicios.¿json de verdad?


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 pide al desarrollador que genere un archivo json: google-services.json y ponerlo 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 seguridad, ¿para qué es realmente este archivo? ¿Cuál es su uso y cómo funciona?

Author: Janusz, 2015-07-24

3 answers

Investigué un poco con respecto al complemento de Google-services y json y encontré las fuentes de este complemento.

Lo primero es lo primero

El gradle-plugin google-services al que hace referencia classpath y con apply es solo un plugin en 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 plugin solo se entiende como un ayudante de inicio rápido para integrar los servicios de Google rápidamente en su aplicación. Obviamente, el proceso es algo complicado y no documentado, por lo que Google debería haber dejado claro lo que hace este proceso.

De hecho, encontré el código fuente para la versión del plugin com.Google.gms: google-services: 1.4.0-beta3 y no encontré ninguna referencia específica en ella con respecto a appinvites ni encontré ninguna API de Google para App Invites! (Pero tal vez solo usa un proyecto API genérico con su id de proyecto, no lo intenté)

Lo que hace

El google-services gradle-plugin busca lo mencionado google-servicios.archivo json en tu app-module. Luego busca configuraciones configuradas como project-id y tracking-id y otras, generadas por la consola de desarrolladores de la API de Google en los servicios de Google.archivo json. Desde 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 GCM, el archivo JSON incluiría el id del proyecto API de la siguiente manera android-recurso:

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

Así que este plugin y el archivo JSON no son esenciales para ejecutar o publicar su aplicación, es solo un ayudante de inicio rápido para generar algunos archivos básicos de recursos de Android para una integración más fácil de 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 google-services siempre genera esos recursos de Android para cada variante de aplicación que se define en su aplicación/compilación.gradle.

Si no quieres eso, deberías usar esos recursos generados en la aplicación-variantes que desee, y eliminar los demás. No se olvide de eliminar el plugin de Google-services aplicar desde app / build.gradle, o bien se regenerará para todas las variantes de aplicaciones.

Lo que no hace

Este plugin y JSON-file NO influyen directamente en el funcionamiento interno de dicho Google-características para su aplicación! Si ya ha seguido tutoriales anteriores en developer.android.com sobre cómo integrar, por ejemplo, GCM o Google Analytics, entonces ni siquiera necesidad de integrar ya sea el gradle-plugin google-services o el google-services.archivo json!

Aviso sobre dónde encontré las fuentes

Después de integrar el complemento de gradle de google-services y al sincronizar tu proyecto, Gradle descarga automáticamente la dependencia de google-services a una ruta similar a esta (en Windows, es posible que tengas que buscar en tu home/.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 contiene el código fuente simple del complemento de gradle.

GoogleServicesPlugin.groovy

Contiene el manejo de las variantes de la aplicación y 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 { 
 181
Author: arne.jans,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-01 09:54:22

Para qué es realmente este archivo:

Google-servicios.json contiene credenciales de desarrollador y ajustes de configuración, que se necesitan para verificar mientras se conecta con GoogleApiClient. Aunque su servicio está funcionando bien con su dispositivo de prueba, ya que está detectando 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 construye un GoogleApiClient, especificando a qué ámbitos y API accederá la aplicación. Cuando el GoogleApiClient se conecta, el usuario inicia sesión.

Vea la sección cómo funciona.

 36
Author: Mohammad Arman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-21 20:09:59

Añadir google-services.json a su módulo y hacer una LIMPIEZA y Una RECONSTRUCCIÓN. Se generará un archivo xml en app/build/generated/res/google-services/debug/values / values.xml con las propiedades de su proyecto y puede 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 la información de momre en google-service.json doc

 2
Author: Beto Caldas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-09 19:01:07