Aby dodać Firebase do projektu aplikacji na Androida, musisz dodać do niego wtyczkę Gradle i plik konfiguracji .
Jeśli dodasz Firebase do projektu aplikacji na Androida za pomocą konsoli Firebase, interfejsu Management REST API lub interfejsu wiersza poleceń Firebase, musisz ręcznie dodać do projektu wtyczkę Gradle i plik konfiguracji JSON. Jeśli jednak używasz Firebase Assistant for Android Studio, te zadania są wykonywane automatycznie podczas konfiguracji.
Dodawanie wtyczki Gradle
Dodaj wtyczkę Gradle usług Google () do pliku build.gradle:
dependencies {
classpath 'com.google.gms:google-services:4.5.0'
// ...
}
Wtyczka Gradle usług Google ma 2 główne funkcje:
Przetwarza plik konfiguracji
i generuje zasoby Androida, których można używać w kodzie aplikacji.google-services.json Dodaje zależności dla podstawowych bibliotek wymaganych przez włączone usługi. W tym kroku musisz zastosować wtyczkę Gradle usług Google w pliku
app/build.gradlew ten sposób:
apply plugin: 'com.google.gms.google-services'Wynik tego kroku możesz zobaczyć, uruchamiając polecenie
./gradlew :app:dependencies.
Dodawanie pliku konfiguracji JSON
Plik konfiguracji jest zwykle umieszczany w katalogu app/ (w katalogu głównym modułu aplikacji Android Studio). Od wersji 2.2.0 wtyczka obsługuje pliki JSON dotyczące typu kompilacji i wariantu usługi. Wszystkie te struktury katalogów są prawidłowe:
// dogfood and release are build types.
app/
google-services.json
src/dogfood/google-services.json
src/release/google-services.json
...
Jeśli używane są warianty usługi, te bardziej skomplikowane struktury katalogów również są prawidłowe.
// free and paid are product flavors.
app/
google-services.json
src/dogfood/paid/google-services.json
src/release/free/google-services.json
...
Jak przetwarzany jest plik konfiguracji 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 typu kompilacji) na podstawie tej logiki:
W przypadku każdego elementu tablicy
clientwtyczka sprawdza wartośćclient_info/android_client_info/package_name. Jeśli nazwa pakietu pasuje do tej wartości, zwraca obiekt elementu.Jeśli żaden z elementów
clientnie pasuje do nazwy pakietu, wtyczka zgłasza wyjątek.
W dalszej części tego dokumentu używamy YOUR_CLIENT, aby odnieść się do elementu tablicy client określonego przez opisaną powyżej logikę.
tworzenie plików XML,
Głównym wynikiem przetwarzania pliku JSON jest utworzenie 2 plików XML, do których możesz odwoływać się w kodzie jako do zasobów Androida. Poniżej znajdziesz przykłady każdego z tych 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 kompilowania pojawia się ten komunikat o błędzie: File google-services.json is missing from module root folder. The Google Services Plugin cannot function without it.
Konsola Firebase pomoże Ci pobrać plik konfiguracyjny .
Po pobraniu pliku konfiguracji skopiuj go do folderu app/ projektu Android 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 lub 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, przejdź ponownie przez proces rozpoczynania i pobierz nowy plik JSON.