Eu investiguei um pouco sobre o plugin do google-services e o json e encontrei as fontes desse plugin.
Primeiras coisas primeiro
O google-services gradle-plugin que é referenciado por classpath e with apply é apenas um plug-in em tempo de construção! Portanto, ele influencia apenas o processo de criação do seu aplicativo, mas não o processo de tempo de execução!
Este plug-in é apenas um auxiliar de início rápido para integrar rapidamente os serviços do Google ao seu aplicativo. Obviamente, o processo é um tanto complicado e não está documentado; portanto, o Google deveria ter deixado claro o que esse processo faz.
Na verdade, encontrei o código-fonte da versão do plug-in com.google.gms: google-services: 1.4.0-beta3 e não encontrei nenhuma referência específica a respeito de convites de aplicativos, nem encontrei nenhuma API do Google para convites de aplicativos! (Mas talvez ele apenas use um projeto de API genérico com seu ID de projeto, eu não tentei isso)
O que faz
O plugin gradle do google-services procura o arquivo google-services.json mencionado no seu módulo de aplicativo. Em seguida, ele procura configurações definidas, como identificações de projeto e identificações de rastreamento, geradas pelo console do desenvolvedor da API do Google no arquivo google-services.json. A partir das configurações encontradas, os valores dos recursos do Android são gerados no seguinte caminho:
$project.buildDir/generated/res/google-services/$variant.dirName/values/values.xml
Por exemplo, para uma compilação de depuração do seu aplicativo:
app/build/generated/res/google-services/debug/values/values.xml
Por exemplo, se você seguiu o tutorial do GCM, o arquivo JSON incluiria o ID do projeto da API como o seguinte recurso Android:
<string name="gcm_defaultSenderId">project-id</string>
Portanto, esse plug-in e o arquivo JSON não são essenciais para executar ou publicar seu aplicativo, é apenas um auxiliar de início rápido para gerar alguns arquivos básicos de recursos do Android para facilitar a integração de recursos específicos da API do Google.
Observe no código-fonte mencionado abaixo que o plug-in google-services sempre gera esses recursos do Android para cada variante de aplicativo definida em seu app / build.gradle.
Se você não quiser, use os recursos gerados nas variantes de aplicativos que deseja e exclua os outros. Não se esqueça de remover o plug-in google-services aplicável a partir de app / build.gradle; caso contrário, ele será regenerado para todas as variantes de aplicativo.
O que não
Este plug-in e o arquivo JSON NÃO influenciam diretamente o funcionamento interno dos referidos recursos do Google para seu aplicativo! Se você já seguiu os tutoriais mais antigos no developer.android.com sobre como integrar, por exemplo, GCM ou Google Analytics, não precisa nem integrar o google-services do plugin gradle ou o arquivo google-services.json!
Aviso sobre onde encontrei as fontes
Depois de integrar o gradle-plugin do google-services e ao sincronizar seu projeto, o Gradle baixa automaticamente a dependência do google-services para um caminho semelhante a este (no Windows, talvez seja necessário procurar em sua home / .gradle for 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 você extrair esse arquivo jar, encontrará dois arquivos:
GoogleServicesPlugin.groovy
GoogleServicesTask.java
que contêm o código-fonte simples do gradle-plugin.
GoogleServicesPlugin.groovy
contém o manuseio das variantes de aplicativos e definições básicas de caminhos etc.
GoogleServicesTask.java
contém a definição de tarefa real, procure o seguinte método para ver o que ele realmente faz:
@TaskAction
public void action() throws IOException {