Firebase'i Android projenize eklerken projenize Gradle eklentisini ve bir yapılandırma dosyasını eklemeniz gerekir.
Android projenize Firebase'i Firebase konsolunu, Management REST API'yi veya Firebase CLI'yı kullanarak eklerseniz Gradle eklentisini ve JSON yapılandırma dosyasını projenize manuel olarak eklemeniz gerekir. Ancak Firebase Assistant for Android Studio kullanıyorsanı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 temel 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,
app/build.gradledosyanızda Google hizmetleri Gradle eklentisini aşağıdaki gibi uygulamanız gerekir:
apply plugin: 'com.google.gms.google-services'Bu adımın sonucunu
./gradlew :app:dependencieskomutunu çalıştırarak 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ünde) yerleştirilir. Eklenti, 2.2.0 sürümünden itibaren derleme türüne ve ürün çeşidine özel JSON dosyalarını desteklemektedir. 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 çeşitleri 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ı nasıl işlenir?
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 üyesi, projeye eklediğiniz istemciler (Android uygulamaları) hakkında bilgiler 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şmezse eklenti bir istisna oluşturur.
Bu belgenin geri kalanında, yukarıda açıklanan mantıkla belirlenen client dizisinin üyesini ifade etmek için YOUR_CLIENT kullanılır.
XML dosyalarının üretimi
JSON işlemenin temel sonucu, kodunuzda Android kaynakları olarak referans verebileceğiniz iki XML dosyası oluşturmaktır. Aşağıda her dosya türüne ilişkin örnekler 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 yapılandırma dosyasında bulunur. Android projenizde Gradle eklentisini kullanmanızı engelleyen bir yapılandırma varsa XML dosyalarını bu değerleri kullanarak 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
Oluşturma 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 sembolleri 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 uygulayın ve yeni bir JSON dosyası alın.