Introduzione
Durante l'abilitazione delle API di Google o dei servizi Firebase nella tua applicazione Android, potresti dover aggiungere il plug-in google-services
al tuo file build.gradle
:
dependencies {
classpath 'com.google.gms:google-services:4.3.15'
// ...
}
Il plug-in google-services
ha due funzioni principali:
- Elabora il file
google-services.json
e produci risorse Android che possono essere utilizzate nel codice dell'applicazione. Per ulteriori informazioni, vedi Aggiunta del file JSON. Aggiungi dipendenze per le librerie di base richieste per i servizi che hai abilitato. Questo passaggio richiede l'applicazione del plug-in Gradle dei servizi Google nel tuo file
app/build.gradle
, in questo modo:
apply plugin: 'com.google.gms.google-services'
Puoi vedere il risultato di questo passaggio eseguendo
./gradlew :app:dependencies
.
Aggiunta del file JSON
In genere, il file google-services.json
viene inserito nella directory app/
(nella directory principale del modulo App per Android Studio). A partire dalla versione 2.2.0
, il plug-in supporta file JSON specifici per tipo di build e prodotto. Tutte le seguenti strutture di directory sono valide:
// dogfood and release are build types. app/ google-services.json src/dogfood/google-services.json src/release/google-services.json ...
Nota: fornire un file google-services.json nella directory di rilascio ti consente di mantenere un progetto Firebase separato per i tuoi APK di produzione.
Quando sono in uso i gusti, queste strutture di directory più complicate sono valide.
// free and paid are product flavors. app/ google-services.json src/dogfood/paid/google-services.json src/release/free/google-services.json ...
Elaborazione del file JSON
Il file google-services.json
ha la seguente struttura di base:
{ "project_info": {...}, "client": [...], }
L'oggetto project_info
contiene informazioni generali sul progetto, mentre ogni membro dell'array client
contiene informazioni sui client (app Android) aggiunte al progetto.
Durante l'elaborazione del file JSON per la tua app Android, il plug-in utilizza solo l'oggetto client
che corrisponde al nome del pacchetto (per il tipo di build corrente) in base alla logica seguente:
- Per ogni membro dell'array
client
:- Controlla il valore di
client_info/android_client_info/package_name
- Se il nome del pacchetto corrisponde a questo valore, restituisci l'oggetto membro.
- Controlla il valore di
- Se nessuno dei membri di
client
corrisponde al nome del pacchetto, viene fatta un'eccezione.
Nel resto del documento utilizzeremo {YOUR_CLIENT}
per fare riferimento al membro dell'array client
determinato dalla procedura precedente.
Il risultato principale dell'elaborazione JSON è la produzione di due file XML che puoi fare riferimento come risorse Android nel tuo codice Java. Di seguito è riportato un esempio di ogni file:
app/build/generate/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/generate/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>
Tutti i valori nei file XML sono presenti nel file google-services.json
nelle posizioni seguenti. Se il tuo progetto Android ha una configurazione che ti impedisce di utilizzare il plug-in google-services
, puoi ricreare in sicurezza i file XML utilizzando questi valori:
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
chiave_google_api:
{YOUR_CLIENT}/api_key/current_key
google_crash_reporting_api_key:
{YOUR_CLIENT}/api_key/current_key
project_id:
project_info/project_id
Risoluzione dei problemi
D: Durante la creazione viene visualizzato il seguente messaggio di errore: "File google-services.json mancante dalla cartella principale del modulo. Senza questo plug-in dei servizi Google, il plug-in non può funzionare.
R: La console Firebase ti aiuterà a scaricare la google-services.json
.
Inoltre, le guide rapide per la maggior parte delle API contengono istruzioni per la generazione di questo file.
Dopo aver scaricato il file google-services.json
, copialo nella cartella app/
del tuo progetto Android Studio o nella cartella app/src/{build_type}
se utilizzi più tipi di build.
D: Non riesco a trovare il simbolo "R.string.gcm_defaultSenderId", "R.xml.global_tracker" e così via.
R: Assicurati che il nome del pacchetto nel tuo file build.gradle
corrisponda al nome del pacchetto che hai inserito durante la creazione del file google-services.json
. In caso di dubbi, ripeti il flusso introduttivo e ottieni un nuovo file JSON.