मैंने Google-Services प्लगइन और json के बारे में थोड़ी खोजबीन की और इस प्लगइन के स्रोतों का पता लगाया।
पहली चीजें पहले
वर्गीकृत-प्लगइन google-services, जो classpath द्वारा संदर्भित है और लागू होने के साथ ही एक बिल्ड-टाइम प्लगइन है! तो यह केवल आपके ऐप की बिल्ड-प्रोसेस को प्रभावित करता है, लेकिन रनटाइम-प्रोसेस को नहीं!
यह प्लगइन केवल आपके ऐप में Google-सेवाओं को जल्दी से एकीकृत करने के लिए एक तेज-सहायक के रूप में है। जाहिर है, प्रक्रिया कुछ हद तक जटिल है और दस्तावेज नहीं है, इसलिए Google को यह स्पष्ट करना चाहिए था कि यह प्रक्रिया क्या करती है।
वास्तव में, मुझे प्लगइन संस्करण com.google.gms के लिए स्रोत कोड मिला: google-services: 1.4.0-Beta3 और didin इसमें कोई विशेष संदर्भ नहीं मिला Appinvites के बारे में और न ही मुझे App Invites के लिए कोई Google API मिला! (लेकिन शायद यह सिर्फ अपनी परियोजना आईडी के साथ एक सामान्य एपीआई परियोजना का उपयोग करता है, मैंने यह कोशिश नहीं की)
यह क्या करता है
आपके ऐप-मॉड्यूल में उल्लिखित google-services.json फ़ाइल के लिए Google-सेवाओं का क्रम-प्लगइन दिखता है। तब यह Google-API डेवलपर कंसोल द्वारा Google-services.json फ़ाइल में जेनरेट की गई प्रोजेक्ट-आईडी और ट्रैकिंग-आईडी जैसी कॉन्फ़िगर सेटिंग्स की तलाश करता है। यह पाया सेटिंग्स से, Android संसाधन मान निम्न पथ में उत्पन्न होते हैं:
$project.buildDir/generated/res/google-services/$variant.dirName/values/values.xml
उदाहरण के लिए अपने ऐप के डिबग-बिल्ड के लिए:
app/build/generated/res/google-services/debug/values/values.xml
उदाहरण के लिए, यदि आपने GCM ट्यूटोरियल का अनुसरण किया है, तो JSON फ़ाइल में API प्रोजेक्ट की id निम्नलिखित android-resource के रूप में शामिल होगी:
<string name="gcm_defaultSenderId">project-id</string>
इसलिए यह प्लगइन और JSON फ़ाइल आपके ऐप को चलाने या प्रकाशित करने के लिए आवश्यक नहीं है, विशिष्ट Google API सुविधाओं के आसान एकीकरण के लिए कुछ बुनियादी एंड्रॉइड-संसाधन फ़ाइलों को उत्पन्न करने के लिए यह केवल एक तेज सहायक है।
नीचे दिए गए स्रोत कोड में सूचना है कि Google- सेवा प्लगइन हमेशा आपके ऐप्लिकेशन / बिल्ड.gradle में परिभाषित किए गए प्रत्येक एप्लिकेशन-संस्करण के लिए उन Android-संसाधनों को उत्पन्न करता है।
यदि आप ऐसा नहीं चाहते हैं, तो आपको उन एप्लिकेशन-वेरिएंट में उन जेनरेट किए गए संसाधनों का उपयोग करना चाहिए जो आप चाहते हैं, और दूसरों को हटा दें। ऐप / बिल्ड.gradle से लागू होने वाली google-services प्लगइन को हटाना न भूलें, अन्यथा यह सभी ऐप-वेरिएंट के लिए पुनर्जीवित हो जाएगा।
यह क्या नहीं है
यह प्लगइन और JSON- फाइल आपके ऐप के लिए Google- सुविधाओं के आंतरिक कामकाज को सीधे प्रभावित नहीं करता है! अगर आपने पहले से ही जीसीएम या गूगल एनालिटिक्स को कैसे एकीकृत किया जाए, इसके बारे में developer.android.com पर पुराने ट्यूटोरियल्स का अनुसरण किया है, तो आपको gradle-plugin google-services या google-services.json फ़ाइल को भी एकीकृत करने की आवश्यकता नहीं है!
जहां मुझे स्रोत मिले, उसके बारे में ध्यान दें
आपके द्वारा Google-सेवाओं के ग्रेड-प्लगइन को एकीकृत करने के बाद और जब आपकी परियोजना सिंक हो जाती है, तो Gradle स्वचालित रूप से Google-सेवाओं की निर्भरता को इसी तरह के पथ पर डाउनलोड करता है (Windows पर, आपको अपने घर / लिनक्स के लिए .gradle देखने की आवश्यकता हो सकती है):
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
यदि आप इस जार-फ़ाइल को निकालते हैं, तो आपको दो फाइलें मिलेंगी:
GoogleServicesPlugin.groovy
GoogleServicesTask.java
जिसमें ग्रेड-प्लगइन का सादा स्रोत कोड होता है।
GoogleServicesPlugin.groovy
ऐप-वेरिएंट की हैंडलिंग और रास्तों की बुनियादी परिभाषाएं आदि शामिल हैं।
GoogleServicesTask.java
इसमें वास्तविक कार्य-परिभाषा सम्मिलित है, यह देखने के लिए निम्नलिखित विधि की तलाश करें कि यह वास्तव में क्या करता है:
@TaskAction
public void action() throws IOException {