Pengantar
Sebagai bagian dari pengaktifan Google API atau layanan Firebase di aplikasi Android, Anda mungkin harus menambahkan plugin google-services
ke file build.gradle
:
dependencies {
classpath 'com.google.gms:google-services:4.3.15'
// ...
}
Plugin google-services
memiliki dua fungsi utama:
- Proses file
google-services.json
dan hasilkan resource Android yang dapat digunakan dalam kode aplikasi Anda. Lihat Menambahkan File JSON untuk informasi selengkapnya. Tambahkan dependensi untuk library dasar yang diperlukan untuk layanan yang telah Anda aktifkan. Langkah ini mengharuskan Anda menerapkan plugin Gradle Layanan Google di file
app/build.gradle
, seperti:
apply plugin: 'com.google.gms.google-services'
Anda dapat melihat hasil langkah ini dengan menjalankan
./gradlew :app:dependencies
.
Menambahkan File JSON
File google-services.json
umumnya ditempatkan di
direktori app/
(di root modul aplikasi Android Studio). Pada versi 2.2.0
, plugin mendukung jenis JSON dan file JSON khusus ragam produk. Semua struktur direktori berikut valid:
// dogfood and release are build types. app/ google-services.json src/dogfood/google-services.json src/release/google-services.json ...
Catatan: Dengan menyediakan file google-services.json di direktori rilis, Anda dapat mempertahankan project Firebase terpisah untuk APK produksi.
Saat ragam produk digunakan, struktur direktori yang lebih rumit ini juga valid.
// free and paid are product flavors. app/ google-services.json src/dogfood/paid/google-services.json src/release/free/google-services.json ...
Memproses File JSON
File google-services.json
memiliki struktur dasar berikut:
{ "project_info": {...}, "client": [...], }
Objek project_info
berisi informasi umum tentang project Anda, sementara setiap anggota array client
berisi informasi tentang klien (aplikasi Android) yang telah Anda tambahkan ke project.
Saat memproses file JSON untuk aplikasi Android, plugin hanya menggunakan objek client
yang cocok dengan nama paket Anda (untuk jenis build saat ini) berdasarkan logika berikut:
- Untuk setiap anggota array
client
:- Periksa nilai
client_info/android_client_info/package_name
- Jika nama paket cocok dengan nilai ini, tampilkan objek anggota.
- Periksa nilai
- Jika tidak ada anggota
client
yang cocok dengan nama paket, pengecualian akan dilempar.
Untuk bagian selanjutnya dalam dokumen ini, kita akan menggunakan {YOUR_CLIENT}
untuk merujuk ke anggota array client
yang ditentukan oleh prosedur di atas.
Hasil utama pemrosesan JSON adalah menghasilkan dua file XML yang dapat Anda rujuk sebagai resource Android dalam kode Java. Berikut adalah contoh setiap file:
app/build/generate/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/generate/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>
Setiap nilai dalam file XML ada di file google-services.json
pada lokasi di bawah. Jika project Android memiliki beberapa konfigurasi
yang mencegah Anda menggunakan plugin google-services
, Anda dapat
membuat ulang file XML dengan aman menggunakan nilai berikut:
ID_aplikasi_google:
{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
url_database_:
project_info/firebase_url
kunci_google_api:
{YOUR_CLIENT}/api_key/current_key
google_crash_reporting_api_key:
{YOUR_CLIENT}/api_key/current_key
project_id:
project_info/project_id
Pemecahan masalah
T: Saat mem-build, saya mendapatkan pesan error berikut: "File google-services.json tidak ada di folder root modul. Plugin Layanan Google tidak dapat berfungsi tanpanya".
J: Firebase console akan membantu Anda
mendownload google-services.json
.
Selain itu, Panduan memulai untuk sebagian besar API memiliki petunjuk untuk
membuat file ini.
Setelah mendownload file google-services.json
, salin
ke folder app/
project Android Studio, atau ke
folder app/src/{build_type}
jika Anda menggunakan beberapa jenis build.
T: Saya tidak bisa menemukan simbol "R.string.gcm_defaultSenderId", "R.xml.global_tracker", dll.
J: Pastikan nama paket dalam file build.gradle
Anda cocok dengan nama paket yang Anda masukkan saat membuat file google-services.json
. Jika Anda tidak yakin, jalankan alur memulai lagi dan dapatkan file json baru.