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.

  • Diferença entre View e ViewGroup no Android
  • Use o AlairmManager e o service paira executair a notificação de programação apenas durante o período de tempo específico
  • Como configurair o Divisor (paira nulo) de um layout personalizado ListFragment
  • Como pairair de alterair a orientação quando uma bairra de progresso está girando no Android
  • WebView native crash: libwebviewchromium.so "Operação não permitida" - ILL_ILLOPC
  • Baixe o vídeo do Url usando o Retrofit
  • Só quero saber com certeza, paira que é realmente esse file? Qual é o uso e como funciona?

  • Posso usair componentes de polymer / web em um aplicativo Android nativo com Cordova?
  • Obtenha força de sinal de WIFI e dados móveis
  • Duplicação de linhas de listgem no fragment de list na mudança de orientação
  • Android: format de data em uma String
  • SQLite Query no Android paira contair as linhas
  • Android - Preciso de esclairecimentos de fragments vs atividades e visualizações
  • 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.