Plugin Gradle Layanan Google

Pengantar

Sebagai bagian dari pengaktifan layanan Google API atau Firebase di Android Anda aplikasi, Anda mungkin harus menambahkan plugin google-services ke File build.gradle:

dependencies {
    classpath 'com.google.gms:google-services:4.4.2'
    // ...
}

Plugin google-services memiliki dua fungsi utama:

  1. Memproses file google-services.json dan menghasilkan Android resource yang dapat digunakan dalam pada kode sumber. Lihat Menambahkan File JSON informasi selengkapnya.
  2. Menambahkan dependensi untuk library dasar yang diperlukan bagi layanan yang Anda miliki mengaktifkan pembuatan versi. Langkah ini mengharuskan Anda menerapkan Gradle Layanan Google plugin di file app/build.gradle Anda, seperti berikut:
    apply plugin: 'com.google.gms.google-services'

    Anda dapat melihat hasil dari langkah ini dengan menjalankan ./gradlew :app:dependencies.

Menambahkan File JSON

File google-services.json biasanya ditempatkan di bagian Direktori app/ (di root modul aplikasi Android Studio). Sebagai dari versi 2.2.0 plugin mendukung jenis build dan ragam produk file JSON tertentu. 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: Menyediakan file google-services.json di direktori rilis memungkinkan Anda perlu mengelola project Firebase terpisah untuk APK produksi.

Ketika 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 sementara setiap anggota array client berisi informasi tentang klien (aplikasi Android) yang telah Anda tambahkan ke project.

Saat memproses file JSON untuk aplikasi Android Anda, plugin hanya menggunakan Objek client yang cocok dengan nama paket Anda (untuk 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.
  • Jika tidak ada anggota client yang cocok dengan nama paket, pengecualian akan ditampilkan.

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 sebagai referensi Android dalam kode Java. Di bawah ini adalah contoh setiap file:

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>

Setiap nilai dalam file XML ada di google-services.json di lokasi di bawah ini. Jika project Android Anda memiliki beberapa konfigurasi yang mencegah Anda menggunakan plugin google-services, Anda dapat membuat ulang file XML dengan aman secara manual menggunakan nilai berikut:

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

Pemecahan masalah

T: Saat membuat, saya mendapatkan pesan error berikut: "File google-services.json tidak ada di folder root modul. Layanan Google Plugin tidak dapat berfungsi tanpanya".

J: Firebase console akan membantu Anda download google-services.json. Selain itu, Panduan memulai untuk sebagian besar API memiliki petunjuk untuk yang akan menghasilkan file ini. Setelah mendownload file google-services.json, salin file tersebut ke dalam folder app/ project Android Studio Anda, atau ke dalam app/src/{build_type} jika Anda menggunakan beberapa jenis build.

T: Saya tidak dapat menemukan simbol "R.string.cm_defaultSenderId", "R.xml.global_tracker", dll.

J: Pastikan nama paket di file build.gradle Anda cocok dengan nama paket yang Anda masukkan saat membuat google-services.json . Jika Anda tidak yakin, jalankan lagi alur untuk memulai dan file json baru.