Giriş
Android uygulamanızda Google API'lerini veya Firebase hizmetlerini etkinleştirmek için build.gradle
dosyanıza google-services
eklentisini eklemeniz gerekebilir:
dependencies {
classpath 'com.google.gms:google-services:4.4.0'
// ...
}
google-services
eklentisinin iki temel işlevi vardır:
google-services.json
dosyasını işleyip uygulamanızın kodunda kullanılabilecek Android kaynakları oluşturun. Daha fazla bilgi için JSON Dosyasını Ekleme bölümüne bakın.Etkinleştirdiğiniz hizmetler için gereken temel kitaplıklara bağımlılık ekleyin. Bu adım, Google Services Gradle eklentisini
app/build.gradle
dosyanıza uygulamanızı gerektirir. Şunun gibi:
apply plugin: 'com.google.gms.google-services'
Bu adımın sonucunu
./gradlew :app:dependencies
komutunu çalıştırarak görebilirsiniz.
JSON dosyasını ekleme
google-services.json
dosyası genellikle app/
dizinine (Android Studio uygulama modülünün kök dizininde) 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 ...
Not: Sürüm dizininde bir google-services.json dosyası sağlamak, üretim APK'larınız için ayrı bir Firebase projesi yönetmenize olanak tanır.
Ürün çeşitleri kullanıldığında, bu daha karmaşık dizin yapıları da geçerli olur.
// free and paid are product flavors. app/ google-services.json src/dogfood/paid/google-services.json src/release/free/google-services.json ...
JSON dosyasını işleme
google-services.json
dosyası aşağıdaki temel yapıya sahiptir:
{ "project_info": {...}, "client": [...], }
project_info
nesnesi, projenizle ilgili genel bilgiler içerirken client
dizisinin her üyesi, projeye eklediğiniz istemciler (Android uygulamaları) hakkında bilgi 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 (geçerli derleme türü için) eşleşen client
nesnesini kullanır:
client
dizisinin her bir üyesi için:client_info/android_client_info/package_name
değerini kontrol edin- Paket adı bu değerle eşleşiyorsa üye nesnesini döndürün.
client
üyelerinden hiçbiri paket adıyla eşleşmiyorsa istisna yapılır.
Bu belgenin geri kalanında, yukarıdaki prosedürle belirlenen client
dizisinin üyesine referans vermek için {YOUR_CLIENT}
kullanacağız.
JSON işleminin ana sonucu, Java kodunuzda Android kaynakları olarak referans verebileceğiniz iki XML dosyası oluşturmaktır. Aşağıda her dosyaya ait bir örnek 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 her değer, aşağıdaki konumlardaki google-services.json
dosyasında bulunur. Android projenizde google-services
eklentisini kullanmanızı engelleyen bir yapılandırma varsa aşağıdaki değerleri kullanarak XML dosyalarını manuel olarak güvenli bir şekilde yeniden oluşturabilirsiniz:
google_app_id:
{YOUR_CLIENT}/client_info/mobilesdk_app_id
gcm_defaultSenderId:
project_info/project_number
default_web_client_id:
{YOUR_CLIENT}/oauth_client/client_id (client_type == 3)
ga_trackingId:
{YOUR_CLIENT}/services/analytics-service/analytics_property/tracking_id
firebase_database_url:
project_info/firebase_url
google_api_key:
{YOUR_CLIENT}/api_key/current_key
google_crash_reporting_api_key:
{YOUR_CLIENT}/api_key/current_key
project_id:
project_info/project_id
Sorun giderme
S: Derleme sırasında şu hata mesajını alıyorum: "google-services.json dosyası modül kök klasöründe bulunmuyor. Google Hizmetleri Eklentisi olmadan çalışamaz".
Y: Firebase konsolu google-services.json
uygulamasını indirmenize yardımcı olur.
Ek olarak, çoğu API'nin Hızlı Başlangıç kılavuzlarında bu dosyayı oluşturmayla ilgili talimatlar bulunur.
google-services.json
dosyasını indirdikten sonra dosyayı Android Studio projenizin app/
klasörüne veya birden çok derleme türü kullanıyorsanız app/src/{build_type}
klasörüne kopyalayın.
S: "R.string.gcm_defaultGönderenId", "R.xml.global_tracker" vb. sembolleri bulamıyorum.
Y: 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.