W ramach dodawania Firebase do projektu aplikacji na Androida musisz dodać do niego wtyczkę Gradle i plik konfiguracyjny.
Jeśli dodasz Firebase do projektu aplikacji na Androida za pomocą Firebase konsoli, interfejsu Management REST API lub Firebase interfejsu wiersza poleceń, musisz ręcznie dodać do projektu wtyczkę Gradle i plik konfiguracyjny JSON. Jeśli jednak używasz Firebase Assistant for Android Studio, te zadania są wykonywane automatycznie podczas konfiguracji.
Dodawanie wtyczki Gradle
Wtyczkę Gradle usług Google () dodajesz do pliku build.gradle:
dependencies {
classpath 'com.google.gms:google-services:4.5.0'
// ...
}
Wtyczka Gradle do usług Google ma 2 główne funkcje:
Przetwarza plik konfiguracyjny
i tworzy zasoby Androida, które można wykorzystać w kodzie aplikacji.google-services.json Dodaje zależności dla podstawowych bibliotek wymaganych przez włączone usługi. Ten krok wymaga zastosowania wtyczki Gradle usług Google w pliku
app/build.gradlew ten sposób:
apply plugin: 'com.google.gms.google-services'Wynik tego kroku możesz sprawdzić, uruchamiając
./gradlew :app:dependencies.
Dodawanie pliku konfiguracyjnego JSON
Plik konfiguracyjny jest zwykle umieszczany w katalogu app/ (w katalogu głównym modułu aplikacji w Android Studio). Od wersji 2.2.0 wtyczka obsługuje pliki JSON specyficzne dla rodzaju kompilacji i wersji produktu. Prawidłowe są wszystkie te struktury katalogów:
// dogfood and release are build types.
app/
google-services.json
src/dogfood/google-services.json
src/release/google-services.json
...
Gdy używane są wersje produktu, te bardziej skomplikowane struktury katalogów są również prawidłowe.
// free and paid are product flavors.
app/
google-services.json
src/dogfood/paid/google-services.json
src/release/free/google-services.json
...
Sposób przetwarzania pliku konfiguracyjnego JSON
Plik konfiguracji ma taką podstawową strukturę:
{
"project_info": {...},
"client": [...],
}
Obiekt project_info zawiera ogólne informacje o projekcie, a każdy element tablicy client zawiera informacje o klientach (aplikacjach na Androida) dodanych do projektu.
Podczas przetwarzania pliku JSON aplikacji na Androida wtyczka używa tylko obiektu client, który pasuje do nazwy pakietu (w przypadku bieżącego rodzaju kompilacji) zgodnie z tą logiką:
W przypadku każdego elementu tablicy
clientwtyczka sprawdza wartośćclient_info/android_client_info/package_name. Jeśli nazwa pakietu jest zgodna z tą wartością, zwraca obiekt elementu.Jeśli żaden z elementów
clientnie pasuje do nazwy pakietu, wtyczka zgłasza wyjątek.
W pozostałej części tego dokumentu używamy symbolu YOUR_CLIENT, aby odwoływać się do elementu tablicy client określonego przez logikę opisaną powyżej.
Tworzenie plików XML
Głównym wynikiem przetwarzania pliku JSON jest utworzenie 2 plików XML, do których możesz się odwoływać w kodzie jako do zasobów Androida. Oto przykłady każdego z plików:
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>
Wartości w plikach XML
Każda wartość w plikach XML jest obecna w pliku konfiguracji w lokalizacjach wymienionych poniżej. Jeśli Twój projekt aplikacji na Androida ma konfigurację, która uniemożliwia korzystanie z wtyczki Gradle, możesz bezpiecznie odtworzyć pliki XML ręcznie, używając tych wartości.
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
Rozwiązywanie problemów
Podczas tworzenia wyświetla się ten komunikat o błędzie: File google-services.json is missing from module root folder. The Google Services Plugin cannot function without it.
Firebase Konsola pomoże Ci pobrać plik konfiguracyjny .
Po pobraniu pliku konfiguracyjnego skopiuj go do folderu app/ w projekcie Androida Studio lub do folderu app/src/{build_type}, jeśli używasz wielu typów kompilacji.
Nie mogę znaleźć symboli takich jak R.string.gcm_defaultSenderId czy R.xml.global_tracker.
Upewnij się, że nazwa pakietu w pliku build.gradle jest zgodna z nazwą pakietu podaną podczas tworzenia pliku google-services.json. Jeśli nie masz pewności, ponownie przejdź proces wprowadzający i pobierz nowy plik JSON.