Ho studiato un po 'per quanto riguarda il plug-in dei servizi di Google e json e ho trovato le fonti di questo plug-in.
Cominciando dall'inizio
Il gradle-plugin google-services a cui fa riferimento classpath e con apply è solo un plugin in fase di compilazione! Quindi influenza solo il processo di compilazione della tua app, ma non il processo di runtime!
Questo plug-in è inteso solo come un aiuto rapido per integrare rapidamente i servizi di Google nella tua app. Ovviamente, il processo è alquanto complicato e non documentato, quindi Google avrebbe dovuto chiarire cosa fa questo processo.
In effetti, ho trovato il codice sorgente per la versione del plugin com.google.gms: google-services: 1.4.0-beta3 e non ho trovato alcun riferimento specifico per quanto riguarda appinvites né ho trovato alcuna API di Google per App Invites! (Ma forse utilizza solo un progetto API generico con il suo ID progetto, non l'ho provato)
Cosa fa
Il plug-in gradle di google-services cerca il file google-services.json menzionato nel tuo modulo-app. Quindi cerca le impostazioni configurate come project-id e tracking-id e simili, generate dalla console per sviluppatori API di Google nel file google-services.json. Dalle impostazioni trovate, i valori delle risorse Android vengono generati nel seguente percorso:
$project.buildDir/generated/res/google-services/$variant.dirName/values/values.xml
Ad esempio per una build di debug della tua app:
app/build/generated/res/google-services/debug/values/values.xml
Ad esempio, se hai seguito il tutorial GCM, il file JSON includerà l'ID del progetto API come la seguente risorsa Android:
<string name="gcm_defaultSenderId">project-id</string>
Quindi questo plug-in e il file JSON non sono essenziali per eseguire o pubblicare la tua app, è solo un aiuto rapido per generare alcuni file di risorse Android di base per una più facile integrazione di specifiche funzionalità API di Google.
Si noti nel codice sorgente a cui si fa riferimento di seguito che il plug-in dei servizi di Google genera sempre quelle risorse Android per ogni variante di app definita nella propria app / build.gradle.
Se non lo desideri, dovresti utilizzare le risorse generate nelle varianti dell'app che desideri ed eliminare le altre. Non dimenticare di rimuovere il plug-in dei servizi di Google si applica da app / build.gradle, altrimenti verrà rigenerato per tutte le varianti dell'app.
Cosa non fa
Questo plugin e il file JSON NON influenzano direttamente il funzionamento interno di dette funzionalità di Google per la tua app! Se hai già seguito tutorial precedenti su developer.android.com su come integrare, ad esempio GCM o Google Analytics, non hai nemmeno bisogno di integrare né il gradle-plugin google-services né il file google-services.json!
Avviso su dove ho trovato le fonti
Dopo aver integrato il plug-in gradle di google-services e sincronizzato il progetto, Gradle scarica automaticamente la dipendenza di google-services in un percorso simile a questo (su Windows, potrebbe essere necessario guardare nella tua home / .gradle per 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
Se estrai questo file jar, troverai due file:
GoogleServicesPlugin.groovy
GoogleServicesTask.java
che contengono il semplice codice sorgente del plugin gradle.
GoogleServicesPlugin.groovy
contiene la gestione delle varianti dell'app e le definizioni di base dei percorsi, ecc.
GoogleServicesTask.java
contiene l'effettiva definizione dell'attività, cerca il seguente metodo per vedere cosa fa veramente:
@TaskAction
public void action() throws IOException {