Firebase'i Android projenize eklerken projenize Gradle eklentisini ve bir yapılandırma dosyasını eklemeniz gerekir.
Firebase konsolu, Management REST API veya Firebase CLI'yı kullanarak Android projenize Firebase'i eklerseniz Gradle eklentisini ve JSON yapılandırma dosyasını projenize manuel olarak eklemeniz gerekir. Ancak Firebase Assistant for Android Studio kullanırsanız bu görevler kurulum sırasında sizin için otomatik olarak yapılır.
Gradle eklentisini ekleme
Google hizmetleri Gradle eklentisini () build.gradle dosyanıza eklersiniz:
dependencies {
classpath 'com.google.gms:google-services:4.5.0'
// ...
}
Google hizmetleri Gradle eklentisinin iki ana işlevi vardır:
yapılandırma dosyasını işler ve uygulamanızın kodunda kullanılabilecek Android kaynakları oluşturur.google-services.json Etkinleştirdiğiniz hizmetler için gereken temel kitaplıkların bağımlılıklarını ekler. Bu adımda, Google hizmetleri Gradle eklentisini
app/build.gradledosyanıza şu şekilde uygulamanız gerekir:
apply plugin: 'com.google.gms.google-services'./gradlew :app:dependencieskomutunu çalıştırarak bu adımın sonucunu görebilirsiniz.
JSON yapılandırma dosyasını ekleme
yapılandırma dosyası genellikle app/ dizinine (Android Studio uygulama modülünün köküne) yerleştirilir. 2.2.0 sürümünden itibaren eklenti, derleme türüne ve ürün türüne özel JSON dosyalarını destekler. Aşağıdaki dizin yapılarının tümü geçerlidir:
// dogfood and release are build types.
app/
google-services.json
src/dogfood/google-services.json
src/release/google-services.json
...
Ürün türleri kullanıldığında bu daha karmaşık dizin yapıları da geçerlidir.
// free and paid are product flavors.
app/
google-services.json
src/dogfood/paid/google-services.json
src/release/free/google-services.json
...
JSON yapılandırma dosyasının işlenme şekli
yapılandırma dosyası aşağıdaki temel yapıya sahiptir:
{
"project_info": {...},
"client": [...],
}
project_info nesnesi projenizle ilgili genel bilgileri içerirken client dizisinin her bir üyesi, projeye eklediğiniz istemcilerle (Android uygulamaları) ilgili bilgileri içerir.
Eklenti, Android uygulamanızın JSON dosyasını işlerken yalnızca aşağıdaki mantığa göre paket adınızla (mevcut derleme türü için) eşleşen client nesnesini kullanır:
Eklenti,
clientdizisinin her üyesi içinclient_info/android_client_info/package_namedeğerini kontrol eder. Paket adı bu değerle eşleşirse üye nesnesini döndürür.clientüyelerinden hiçbiri paket adıyla eşleşmiyorsa eklenti bir istisna oluşturur.
Bu belgenin geri kalanında, yukarıda açıklanan mantıkla belirlenen client dizisinin üyesine atıfta bulunmak için YOUR_CLIENT kullanılmaktadır.
XML dosyalarının oluşturulması
JSON işlemenin ana sonucu, kodunuzda Android kaynakları olarak referans verebileceğiniz iki XML dosyası oluşturmaktır. Aşağıda her bir dosyanın örnekleri verilmiştir:
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>
XML dosyalarındaki değerler
XML dosyalarındaki her değer, aşağıdaki konumlarda bulunan yapılandırma dosyasında yer alır. Android projenizde Gradle eklentisini kullanmanızı engelleyen bir yapılandırma varsa bu değerleri kullanarak XML dosyalarını manuel olarak güvenli bir şekilde yeniden oluşturabilirsiniz.
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
Sorun giderme
Derleme sırasında şu hata mesajını alıyorum: File google-services.json is missing from module root folder. The Google Services Plugin cannot function without it.
Firebase konsolu, yapılandırma dosyasını indirmenize yardımcı olur.
yapılandırma dosyasını indirdikten sonra Android Studio projenizin app/ klasörüne veya birden fazla derleme türü kullanıyorsanız app/src/{build_type} klasörüne kopyalayın.
R.string.gcm_defaultSenderId veya R.xml.global_tracker gibi simgeleri bulamıyorum.
build.gradle dosyanızdaki paket adının, google-services.json dosyasını oluştururken girdiğiniz paket adıyla eşleştiğinden emin olun. Emin değilseniz başlangıç akışını tekrar çalıştırın ve yeni bir JSON dosyası alın.