Saya menyelidiki sedikit tentang plugin layanan google dan json dan menemukan sumber dari plugin ini.
Hal pertama yang pertama
Layanan google plugin gradle yang direferensikan oleh classpath dan dengan apply adalah plugin waktu-build saja! Jadi, ini hanya memengaruhi proses build aplikasi Anda, tetapi bukan proses runtime!
Plugin ini hanya dimaksudkan sebagai bantuan memulai cepat untuk mengintegrasikan layanan Google dengan cepat di aplikasi Anda. Jelas, prosesnya agak berbelit-belit dan tidak didokumentasikan, jadi Google seharusnya menjelaskan apa yang dilakukan proses ini.
Nyatanya, saya menemukan kode sumber untuk versi plugin com.google.gms: google-services: 1.4.0-beta3 dan tidak menemukan referensi khusus di dalamnya terkait appinvites dan saya juga tidak menemukan Google API untuk Undangan Aplikasi! (Tapi mungkin itu hanya menggunakan proyek API umum dengan id proyeknya, saya tidak mencoba ini)
Apa yang dilakukannya
Plugin gradle layanan-google mencari file google-services.json yang disebutkan dalam modul aplikasi Anda. Kemudian ia mencari setelan yang dikonfigurasi seperti project-id dan tracking-id dan semacamnya, yang dihasilkan oleh konsol pengembang Google API ke dalam file google-services.json. Dari setelan yang ditemukan, nilai sumber daya Android dihasilkan ke jalur berikut:
$project.buildDir/generated/res/google-services/$variant.dirName/values/values.xml
Misalnya untuk debug-build aplikasi Anda:
app/build/generated/res/google-services/debug/values/values.xml
Misalnya, jika Anda mengikuti tutorial GCM, file JSON akan menyertakan id proyek API sebagai android-resource berikut:
<string name="gcm_defaultSenderId">project-id</string>
Jadi plugin dan file JSON ini tidak penting untuk menjalankan atau memublikasikan aplikasi Anda, ini hanyalah bantuan quickstart untuk menghasilkan beberapa file sumber daya android dasar untuk integrasi yang lebih mudah dari fitur Google API tertentu.
Perhatikan dalam kode sumber yang direferensikan di bawah ini bahwa plugin layanan google selalu menghasilkan sumber daya android tersebut untuk setiap varian aplikasi yang ditentukan dalam aplikasi / build.gradle Anda.
Jika Anda tidak menginginkannya, Anda harus menggunakan sumber daya yang dihasilkan dalam varian aplikasi yang Anda inginkan, dan menghapus yang lainnya. Jangan lupa untuk menghapus penerapan plugin layanan-google dari app / build.gradle, atau plugin tersebut akan dibuat ulang untuk semua varian aplikasi.
Apa yang tidak
Plugin dan file JSON ini TIDAK secara langsung memengaruhi cara kerja fitur-fitur Google tersebut untuk aplikasi Anda! Jika Anda telah mengikuti tutorial lama di developer.android.com tentang cara mengintegrasikan mis. GCM atau Google Analytics, Anda bahkan tidak perlu mengintegrasikan layanan google-plugin gradle atau file google-services.json!
Perhatikan di mana saya menemukan sumbernya
Setelah Anda mengintegrasikan plugin gradle layanan-google dan ketika menyinkronkan proyek Anda, Gradle secara otomatis mengunduh ketergantungan layanan-google ke jalur yang mirip dengan ini (di Windows, Anda mungkin perlu melihat ke home / .gradle untuk Linux):
C:\Users\user\.gradle\caches\modules-2\files-2.1\com.google.gms\google-services\1.4.0-beta3\f1580f62e3be313eba041ce19b64fd3f44cf8951\google-services-1.4.0-beta3-sources.jar
Jika Anda mengekstrak file jar ini, Anda akan menemukan dua file:
GoogleServicesPlugin.groovy
GoogleServicesTask.java
yang berisi kode sumber sederhana dari plugin gradle.
GoogleServicesPlugin.groovy
berisi penanganan varian aplikasi dan definisi dasar jalur, dll.
GoogleServicesTask.java
berisi definisi tugas yang sebenarnya, cari metode berikut untuk melihat apa yang sebenarnya dilakukannya:
@TaskAction
public void action() throws IOException {