Investigué un poco sobre el complemento de servicios de Google 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 complemento 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 complemento solo sirve como ayuda de inicio rápido para integrar los servicios de Google rápidamente en su aplicación. Obviamente, el proceso es algo complicado y no está documentado, por lo que Google debería haber dejado en claro lo que hace este proceso.
De hecho, encontré el código fuente para la versión del complemento com.google.gms: google-services: 1.4.0-beta3 y no encontré ninguna referencia específica en él con respecto a las invitaciones a aplicaciones, ¡ni encontré ninguna API de Google para invitaciones a aplicaciones! (Pero tal vez solo use un proyecto de API genérico con su ID de proyecto, no probé esto)
Que hace
Google-services gradle-plugin busca el archivo google-services.json mencionado en su módulo de aplicación. Luego busca configuraciones configuradas como project-id's y tracking-id's y demás, generadas por la consola de desarrollo de la API de Google en el archivo google-services.json. A partir de la configuración que encontró, los valores de los 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 el ID del proyecto de 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 funciones 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 la aplicación del complemento de servicios de Google de app / build.gradle, de lo contrario, se volverá a generar para todas las variantes de la aplicación.
Lo que no
¡Este complemento y el archivo JSON NO influyen directamente en el funcionamiento interno de dichas funciones de Google para su aplicación! Si ya ha seguido los tutoriales anteriores en developer.android.com sobre cómo integrar, por ejemplo, GCM o Google Analytics, entonces ni siquiera necesita integrar el archivo gradle-plugin google-services o google-services.json.
Observe dónde encontré las fuentes.
Después de integrar el complemento 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 es necesario verificar al conectarse 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 elimines.
La Documentación Oficial dice:
La aplicación crea un GoogleApiClient, especificando 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 .
fuente
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 a la cadena xml normal. Ejemplo:
hay una lista con todas las cadenas y más información en google-service.json doc
fuente