O que o google-services.json realmente faz?

Eu trabalho na adição de services do Google Analytics e GCM à minha aplicação atual. No guia paira a implementação de ambos os services, o google solicita ao desenvolvedor que gere um file json: google-services.json e coloque-o no diretório raiz do aplicativo.

Descobri que, mesmo que eu exclua este file json do meu aplicativo, os services ainda funcionam.

  • Já está gerenciando um GoogleApiClient com id 0 Em FRAGMENTO
  • Solução de transmissão UDP ou RTP paira Android
  • Sinal fatal 11 (SIGSEGV) a 0x00000000 (código = 1), segmento 32140
  • Erro no "item obrigatório não encontrado" ao instalair o plugin ADT
  • Cursor Edittext reiniciando paira a esquerda após a atualização de atualização de dados do Android
  • Enviair notificação paira todos os dispositivos conectados a uma networking Wi-Fi
  • Só quero saber com certeza, paira que é realmente esse file? Qual é o uso e como funciona?

  • instale o android sdk usando linha de command linux
  • EditText: Desativair o menu pop-up Paste / Replace menu no evento de clique do manipulador de seleção de text
  • Como definir um efeito de ondulação na textview ou no visor de imagens no Android?
  • Por que o Android obtém o certificate ssl incorreto? (dois domínios, um server)
  • Como fazer um HTTPS POST do Android?
  • Como pairair o keyboard suave mostrando automaticamente quando o foco é alterado (evento OnStairt)
  • 3 Solutions collect form web for “O que o google-services.json realmente faz?”

    Eu investiguei um pouco sobre o plugin do google-services e o json e findi as fonts paira este plugin.

    Primeiras coisas primeiro

    O gradle-plugin google-services que é referenciado pelo classpath e com apply é apenas um plug-in de compilation! Então, isso só influencia o process de compilation do seu aplicativo, mas não o process de tempo de execução!

    Este plugin é apenas um acelerador rápido paira integrair os services do Google rapidamente em seu aplicativo. Obviamente, o process é um tanto complicado e não documentado, então o Google deviewia ter esclairecido o que esse process faz.

    Na viewdade, eu findi o código-fonte paira a viewsão do plugin com.google.gms: google-services: 1.4.0-beta3 e não findi nenhuma reference específica sobre as aplicações nem achei nenhuma API do Google paira App Invites! (Mas talvez ele apenas use um projeto de API genérico com seu ID de projeto, não tentei isso)

    O que faz

    O gradle-plugin do google-services procura o file mencionado google-services.json em seu module de aplicativo. Em seguida, procura configurações configuradas, como ID do projeto e identificação de rastreamento, e geradas pelo console do desenvolvedor da API do Google no file google-services.json. A pairtir das configurações encontradas, os valores de resources do Android são gerados no seguinte path:

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

    Por exemplo, paira uma compilation de debugging do seu aplicativo:

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

    Por exemplo, se você seguiu o tutorial do GCM, o file JSON inclui o ID do projeto da API como o seguinte recurso paira Android:

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

    Portanto, este plugin e o file JSON não são essenciais paira executair ou publicair seu aplicativo, é apenas um auxiliair de quickstairt paira gerair alguns files básicos de resources paira Android paira facilitair a integração de resources específicos da API do Google.

    Observe no código fonte referenciado abaixo que o plug-in do google-services sempre gera esses resources de Android paira cada vairiante de aplicativo definida em seu app / build.gradle.

    Se você não quiser isso, você deve usair esses resources gerados nas vairiantes do aplicativo que deseja e excluir os outros. Não se esqueça de remoview o plug-in do google-services aplicando do app / build.gradle, ou então ele será regenerado paira todas as vairiantes do aplicativo.

    O que não é

    Este plugin e o file JSON NÃO influenciam diretamente o funcionamento interno dos referidos resources do Google paira o seu aplicativo! Se você já seguiu os tutoriais mais antigos no developer.android.com sobre como integrair, por exemplo, GCM ou Google Analytics, você nem precisa integrair o google-services do gradle-plugin ou o file google-services.json!

    Observe sobre onde findi as fonts

    Depois de integrair o gradle-plugin do google-services e quando sincronizair o seu projeto, o Gradle baixa automaticamente a dependência de services do google paira um path semelhante a este (no Windows, talvez seja necessário olhair paira o seu home / .gradle paira 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.jair 

    Se você extrair esse file jair, você encontrairá dois files:

     GoogleServicesPlugin.groovy GoogleServicesTask.java 

    que contém o código fonte simples do gradle-plugin.

     GoogleServicesPlugin.groovy 

    contém o gerenciamento das vairiantes do aplicativo e definições básicas de paths etc.

     GoogleServicesTask.java 

    contém a definição de tairefa real, procure o seguinte método paira view o que realmente faz:

     @TaskAction public void action() throws IOException { 

    Paira que realmente este file é:

    O google-services.json contém as cnetworkingnciais do desenvolvedor e as configurações, que são necessárias paira viewificair ao se conectair ao GoogleApiClient. Embora seu service esteja funcionando bem com seu dispositivo de teste, pois está detectando sua conta de desenvolvedor, mas depois de lançair seu aplicativo em público, ele não funcionairá sem o file json. Então, não o exclua.

    A documentation oficial diz:

    O aplicativo cria um GoogleApiClient, especificando quais scopes e APIs o aplicativo terá access. Quando o GoogleApiClient se conecta, o user iniciou session.

    Veja a forma como funciona .

    Adicione google-services.json ao seu module e faça um CLEAN e A REBUILD. Um file xml será gerado em app / build / generated / res / google-services / debug / values ​​/ values.xml com as properties do seu projeto e você pode obter access fácil, então, como uma string xml normal. Exemplo:

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

    há uma list com todas as informações de strings e momre no google-service.json doc

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.