Introdução
Como parte da ativação das APIs do Google ou dos serviços do Firebase no seu aplicativo Android, talvez seja necessário adicionar o plug-in google-services ao arquivo build.gradle:
dependencies {
classpath 'com.google.gms:google-services:4.4.4'
// ...
}
O plug-in google-services tem duas funções principais:
- Processar o arquivo
google-services.jsone produzir recursos do Android que podem ser usados no código do aplicativo. Consulte Adicionar o arquivo JSON para mais informações. Adicionar dependências para bibliotecas básicas necessárias para os serviços ativados. Essa etapa exige que você aplique o plug-in do Serviços do Google para Gradle no arquivo
app/build.gradle, desta forma:
apply plugin: 'com.google.gms.google-services'Para conferir o resultado dessa etapa, execute
./gradlew :app:dependencies.
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ório 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 os sabores do produto estão em uso, essas estruturas de diretório 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 ...
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 o 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 seu 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 seguinte lógica:
- 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, retorne o objeto membro.
- Verifique o valor de
- Se nenhum dos membros de
clientcorresponder ao nome do pacote, uma exceção será gerada.
No restante deste documento, vamos usar {YOUR_CLIENT} para nos referirmos ao membro da matriz client determinado pelo procedimento acima.
O principal resultado do processamento 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 do Android tiver alguma configuração que impeça o uso do plug-in google-services, você poderá recriar os arquivos XML manualmente usando esses valores:
google_app_id:
{YOUR_CLIENT}/client_info/mobilesdk_app_idgcm_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_idfirebase_database_url:
project_info/firebase_url
google_api_key:
{YOUR_CLIENT}/api_key/current_keygoogle_crash_reporting_api_key:
{YOUR_CLIENT}/api_key/current_keyproject_id:
project_info/project_id
Solução de problemas
P: Ao criar, recebo a seguinte mensagem de erro: "O arquivo google-services.json está ausente da pasta raiz do módulo. O plug-in Serviços do Google não pode funcionar sem ele".
R: O Console do Firebase ajuda 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 seu projeto do Android Studio ou para a
app/src/{build_type} pasta se você 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 do pacote inserido ao criar o arquivo google-services.json. Se você não tiver certeza, execute o fluxo de início novamente e receba um novo arquivo JSON.