Introdução
Como parte da ativação das APIs do Google ou dos serviços do Firebase no seu aplicativo
Android, pode ser necessário adicionar o plug-in google-services
ao seu
arquivo build.gradle
:
dependencies {
classpath 'com.google.gms:google-services:4.4.1'
// ...
}
O plug-in google-services
tem duas funções principais:
- Processe o arquivo
google-services.json
e produza recursos Android que podem ser usados no código do aplicativo. Consulte mais informações em Como adicionar o arquivo JSON. Adicione as dependências das bibliotecas básicas necessárias para os serviços que você ativou. Esta etapa exige que você aplique o plug-in do Gradle para Serviços do Google no seu arquivo
app/build.gradle
, da seguinte maneira:
apply plugin: 'com.google.gms.google-services'
Para ver o resultado desta etapa, execute
./gradlew :app:dependencies
.
Como adicionar o arquivo JSON
O arquivo google-services.json
geralmente é colocado no
diretório app/
(na raiz do módulo do app do Android Studio). A partir
da versão 2.2.0
, o plug-in oferece suporte a arquivos JSON específicos
do tipo de build e da variação de produto. Todas as estruturas de diretórios a seguir são válidas:
// dogfood and release are build types. app/ google-services.json src/dogfood/google-services.json src/release/google-services.json ...
Observação:fornecer um arquivo google-services.json no diretório de lançamento permite manter um projeto do Firebase separado para seus APKs de produção.
Quando as variações de produto estão em uso, essas estruturas de diretórios mais complicadas também são válidas.
// free and paid are product flavors. app/ google-services.json src/dogfood/paid/google-services.json src/release/free/google-services.json ...
Como processar o arquivo JSON
O arquivo google-services.json
tem a seguinte estrutura básica:
{ "project_info": {...}, "client": [...], }
O objeto project_info
contém informações gerais sobre seu
projeto, enquanto cada membro da matriz client
contém informações
sobre os clientes (apps Android) que você adicionou ao projeto.
Ao processar o arquivo JSON do app Android, o plug-in usa apenas o
objeto client
que corresponde ao nome do pacote (para o tipo de build
atual) com base na lógica abaixo:
- Para cada membro da matriz
client
:- Verifique o valor de
client_info/android_client_info/package_name
- Se o nome do pacote corresponder a esse valor, o objeto de membro será retornado.
- Verifique o valor de
- Se nenhum dos membros do
client
corresponder ao nome do pacote, uma exceção será gerada.
No restante deste documento, usaremos {YOUR_CLIENT}
para nos referir ao membro da matriz client
determinada pelo procedimento acima.
O principal resultado do processamento do JSON é produzir dois arquivos XML, que podem ser referenciados como recursos do Android no código Java. Confira abaixo um exemplo de cada arquivo:
app/build/generated/res/google-services/{build_type}/values/values.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <! -- Present in all applications --> <string name="google_app_id" translatable="false">1:1035469437089:android:73a4fb8297b2cd4f</string> <! -- Present in applications with the appropriate services configured --> <string name="gcm_defaultSenderId" translatable="false">1035469437089</string> <string name="default_web_client_id" translatable="false">337894902146-e4uksm38sne0bqrj6uvkbo4oiu4hvigl.apps.googleusercontent.com</string> <string name="ga_trackingId" translatable="false">UA-65557217-3</string> <string name="firebase_database_url" translatable="false">https://example-url.firebaseio.com</string> <string name="google_api_key" translatable="false">AIzbSyCILMsOuUKwN3qhtxrPq7FFemDJUAXTyZ8</string> <string name="google_crash_reporting_api_key" translatable="false">AIzbSyCILMsOuUKwN3qhtxrPq7FFemDJUAXTyZ8</string> <string name="project_id" translatable="false">mydemoapp</string> </resources>
app/build/generated/res/google-services/{flavor}/{build_type}/xml/global_tracker.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="ga_trackingId" translatable="false">UA-65557218-3</string> </resources>
Todos os valores nos arquivos XML estão presentes no arquivo google-services.json
nos locais abaixo. Se o projeto Android tiver alguma configuração
que impeça o uso do plug-in google-services
, você poderá
recriar os arquivos XML manualmente com segurança usando estes valores:
google_app_id:
{YOUR_CLIENT}/client_info/mobilesdk_app_id
gcm_defaultSenderId
project_info/project_number
default_web_client_id:
{YOUR_CLIENT}/oauth_client/client_id (client_type == 3)
ga_trackingId:
{YOUR_CLIENT}/services/analytics-service/analytics_property/tracking_id
firebase_database_url:
project_info/firebase_url
google_api_key:
{YOUR_CLIENT}/api_key/current_key
google_crash_reporting_api_key:
{YOUR_CLIENT}/api_key/current_key
project_id:
project_info/project_id
Solução de problemas
P: Durante a criação, recebo a seguinte mensagem de erro: "O arquivo google-services.json está ausente na pasta raiz do módulo. O plug-in do Google Services não funciona sem ele".
R: O Console do Firebase ajudará você a fazer o download do google-services.json
.
Além disso, os guias de início rápido da maioria das APIs têm instruções para gerar esse arquivo.
Depois de fazer o download do arquivo google-services.json
, copie-o
para a pasta app/
do projeto do Android Studio ou para a
pasta app/src/{build_type}
, se estiver usando vários tipos de build.
P: Não consigo encontrar o símbolo "R.string.gcm_defaultSenderId", "R.xml.global_tracker" etc.
R: Verifique se o nome do pacote no arquivo build.gradle
corresponde ao
nome que você inseriu ao criar o arquivo
google-services.json
. Se não tiver certeza, percorra o fluxo de iniciação novamente e receba
um novo arquivo JSON.