Nell'ambito dell'aggiunta di Firebase al tuo progetto Android, devi aggiungere al progetto il plug-in Gradle e un file di configurazione .
Se aggiungi Firebase al tuo progetto Android utilizzando la consoleFirebase, l'API REST di gestione o l'interfaccia a riga di comandoFirebase, devi aggiungere manualmente il plug-in Gradle e il file di configurazione JSON al progetto. Tuttavia, se utilizzi Firebase Assistant for Android Studio, queste attività vengono eseguite automaticamente durante la configurazione.
Aggiungi 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 della tua 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, in questo modo:
apply plugin: 'com.google.gms.google-services'Puoi visualizzare il risultato di questo passaggio eseguendo
./gradlew :app:dependencies.
Aggiungi 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 i file JSON specifici per il tipo di build e la versione 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
...
Quando vengono utilizzate le versioni prodotto, sono valide anche queste strutture di directory più complicate.
// 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 progetto, mentre ogni membro dell'array client contiene informazioni sui client (app per Android) che hai aggiunto al progetto.
Durante l'elaborazione del 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 build 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.
Nel resto di questo documento viene utilizzato 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 alcuni 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 manualmente i file XML in sicurezza 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 tuo progetto Android Studio o nella cartella app/src/{build_type} se utilizzi più tipi di build.
Non riesco a trovare i simboli come R.string.gcm_defaultSenderId o R.xml.global_tracker.
Assicurati che il nome del pacchetto nel file build.gradle corrisponda a quello inserito durante la creazione del file google-services.json. Se non hai la certezza,
esegui di nuovo il flusso di introduzione e ottieni un nuovo file JSON.