Quando aggiungi Firebase al tuo progetto Android, devi aggiungere il plug-in Gradle e un file di configurazione al tuo progetto.
Se aggiungi Firebase al tuo progetto Android utilizzando la console Firebase, l'API REST Management, o la CLI Firebase, devi aggiungere manualmente il plug-in Gradle e il file di configurazione JSON al tuo progetto. Tuttavia, se utilizzi Firebase Assistant for Android Studio, queste attività vengono eseguite automaticamente durante la configurazione.
Aggiungere il plug-in Gradle
Aggiungi il plug-in Gradle dei servizi Google () al file build.gradle:
dependencies {
classpath 'com.google.gms:google-services:4.5.0'
// ...
}
Il plug-in Gradle dei servizi Google ha due funzioni principali:
Elabora il file di configurazione
e produce risorse Android che possono essere utilizzate nel codice dell'app.google-services.json Aggiunge le dipendenze per le librerie di base richieste per i servizi che hai attivato. Questo passaggio richiede l'applicazione del plug-in Gradle dei servizi Google nel file
app/build.gradle, come segue:
apply plugin: 'com.google.gms.google-services'Puoi visualizzare il risultato di questo passaggio eseguendo
./gradlew :app:dependencies.
Aggiungere il file di configurazione JSON
Il file di configurazione viene generalmente inserito nella directory app/ (nella directory principale del modulo dell'app Android Studio). A partire dalla versione 2.2.0, il plug-in supporta file JSON specifici per il tipo di compilazione e la versione prodotto. Sono valide tutte le seguenti strutture di directory:
// dogfood and release are build types.
app/
google-services.json
src/dogfood/google-services.json
src/release/google-services.json
...
Quando vengono utilizzate le varianti del prodotto, anche 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
...
Come viene elaborato il file di configurazione JSON
Il file di configurazione ha la seguente struttura di base:
{
"project_info": {...},
"client": [...],
}
L'oggetto project_info contiene informazioni generali sul tuo progetto, mentre
ogni membro dell'array client contiene informazioni sui client
(app per Android) che hai aggiunto al progetto.
Quando elabora il file JSON per la tua app per Android, il plug-in utilizza solo l'oggetto
client che corrisponde al nome del pacchetto (per il tipo di compilazione corrente)
in base alla seguente logica:
Per ogni membro dell'array
client, il plug-in controlla il valore diclient_info/android_client_info/package_name. Se il nome del pacchetto corrisponde a questo valore, restituisce l'oggetto membro.Se nessuno dei membri di
clientcorrisponde al nome del pacchetto, il plug-in genera un'eccezione.
Il resto di questo documento utilizza YOUR_CLIENT per fare riferimento al membro dell'array client determinato dalla logica descritta sopra.
Produzione di file XML
Il risultato principale dell'elaborazione JSON è la produzione di due file XML a cui puoi fare riferimento come risorse Android nel tuo codice. Di seguito sono riportati esempi di ciascun file:
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>
Valori nei file XML
Ogni valore nei file XML è presente nel file di configurazione
nelle posizioni elencate di seguito. Se il tuo
progetto Android ha una configurazione che ti impedisce di utilizzare il
plug-in Gradle , puoi ricreare in modo sicuro i
file XML manualmente utilizzando questi valori.
google_app_idYOUR_CLIENT/client_info/mobilesdk_app_idgcm_defaultSenderIdproject_info/project_numberdefault_web_client_idYOUR_CLIENT/oauth_client/client_id (client_type == 3)ga_trackingIdYOUR_CLIENT/services/analytics-service/analytics_property/tracking_idfirebase_database_urlproject_info/firebase_urlgoogle_api_keyYOUR_CLIENT/api_key/current_keygoogle_crash_reporting_api_keyYOUR_CLIENT/api_key/current_keyproject_idproject_info/project_id
Risoluzione dei problemi
Durante la creazione, ricevo il seguente messaggio di errore: File google-services.json is missing from module root folder. The Google Services Plugin cannot function without it.
La console Firebase
ti aiuterà a scaricare il file di configurazione .
Dopo aver scaricato il file di configurazione , copialo nella cartella app/ del progetto Android Studio o nella cartella app/src/{build_type} se utilizzi più tipi di build.
Non riesco a trovare simboli come R.string.gcm_defaultSenderId o R.xml.global_tracker.
Assicurati che il nome del pacchetto nel file build.gradle corrisponda al nome del pacchetto
che hai inserito durante la creazione del file google-services.json. Se non hai la certezza,
esegui di nuovo il flusso di avvio e ottieni un nuovo file JSON.