Google-services eklentisi ve json ile ilgili biraz araştırdım ve bu eklentinin kaynaklarını buldum.
Her şey sırayla
Classpath tarafından başvurulan ve başvuru ile başvurulan gradle eklentisi google hizmetleri yalnızca derleme zamanı eklentisidir! Dolayısıyla, yalnızca uygulamanızın derleme sürecini etkiler, ancak çalışma zamanı sürecini etkilemez!
Bu eklenti, yalnızca Google hizmetlerini uygulamanıza hızlı bir şekilde entegre etmek için hızlı başlangıç yardımcısı olarak düşünülmüştür. Açıkçası, süreç biraz karışıktır ve belgelenmemiştir, bu nedenle Google bu sürecin ne yaptığını netleştirmiş olmalıydı.
Aslında, com.google.gms: google-services: 1.4.0-beta3 eklenti sürümünün kaynak kodunu buldum ve bunun içinde uygulama davetlerine ilişkin herhangi bir özel referans bulamadım veya Uygulama Davetiyeleri için herhangi bir Google API bulamadım! (Ama belki proje kimliğiyle genel bir API projesi kullanıyor, bunu denemedim)
Bu ne yapar
Google-services gradle-plugin, uygulama modülünüzde belirtilen google-services.json dosyasını arar. Ardından, Google API geliştirici konsolu tarafından google-services.json dosyasına oluşturulan proje kimlikleri ve izleme kimlikleri gibi yapılandırılmış ayarları arar. Bulduğu ayarlardan, Android kaynak değerleri aşağıdaki yola oluşturulur:
$project.buildDir/generated/res/google-services/$variant.dirName/values/values.xml
Örneğin, uygulamanızın hata ayıklama derlemesi için:
app/build/generated/res/google-services/debug/values/values.xml
Örneğin, GCM eğiticisini takip ettiyseniz, JSON dosyası API projesinin kimliğini aşağıdaki android kaynağı olarak içerir:
<string name="gcm_defaultSenderId">project-id</string>
Dolayısıyla bu eklenti ve JSON dosyası, uygulamanızı çalıştırmak veya yayınlamak için gerekli değildir, belirli Google API özelliklerinin daha kolay entegrasyonu için bazı temel android kaynak dosyalarını oluşturmak için hızlı bir başlangıç yardımcısıdır.
Aşağıda referans verilen kaynak kodda, google-services eklentisinin her zaman app / build.gradle'da tanımlanan her uygulama varyantı için bu android kaynaklarını oluşturduğuna dikkat edin.
Bunu istemiyorsanız, bu oluşturulan kaynakları istediğiniz uygulama varyantlarında kullanmalı ve diğerlerini silmelisiniz. Google-services eklentisini app / build.gradle'dan kaldırmayı unutmayın, aksi takdirde tüm uygulama varyantları için yeniden oluşturulacaktır.
Ne yapmaz
Bu eklenti ve JSON dosyası, uygulamanız için söz konusu Google özelliklerinin iç işleyişini doğrudan ETKİLEMEZ! GCM veya Google Analytics gibi nasıl entegre edileceğine dair developer.android.com adresindeki eski eğitimleri zaten takip ettiyseniz, o zaman gradle-plugin google-services veya google-services.json dosyasını entegre etmeniz bile gerekmez!
Kaynakları nerede bulduğumla ilgili uyarı
Google-services gradle eklentisini entegre ettikten sonra ve projenizi senkronize ettiğinizde Gradle, google-services bağımlılığını buna benzer bir yola otomatik olarak indirir (Windows'ta, Linux için home / .gradle'a bakmanız gerekebilir):
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
Bu jar dosyasını çıkarırsanız, iki dosya bulacaksınız:
GoogleServicesPlugin.groovy
GoogleServicesTask.java
gradle eklentisinin düz kaynak kodunu içeren.
GoogleServicesPlugin.groovy
uygulama varyantlarının işlenmesini ve yolların temel tanımlarını vb. içerir.
GoogleServicesTask.java
gerçek görev tanımını içeriyorsa, gerçekten ne yaptığını görmek için aşağıdaki yöntemi arayın:
@TaskAction
public void action() throws IOException {