दिलचस्प पोस्ट
सीएक्सईक्सेशन त्रुटि 80040154 की मरम्मत कैसे करें? जेपीए (और इसी तरह की टेबल पंक्तियों में शामिल) में कई संबंध के साथ इकाई को कैसे निकालना है? जावा: असली दुनिया में डबल की बजाए हमें बिगडेकल का उपयोग क्यों करना चाहिए? क्या सी ++ स्ट्रैट के सदस्य डिफ़ॉल्ट रूप से 0 पर आरंभ किए जाते हैं? आईडी को पूरे पृष्ठ में अद्वितीय होना चाहिए? जावास्क्रिप्ट में रिक्त करने के लिए मुझे डिलीवरी बनाम सेटिंग तत्वों का उपयोग कब करना चाहिए? जर्सी: वास्तविक अनुरोध प्रिंट करें पायथन के साथ माउस को नियंत्रित करना पूरी ऊंचाई बढ़ाने के लिए डिव के लिए एंड्रॉइड स्टूडियो में ऐप डीबग करने में सक्षम नहीं निजी शुद्ध वर्चुअल फ़ंक्शन का क्या मतलब है? जावास्क्रिप्ट का उपयोग कर यूआरएल में आप # हश के लिए कैसे जांच सकते हैं? क्या जावा प्रतिबिंब का उपयोग करके नेस्टेड क्लास का एक उदाहरण बनाना संभव है? लिनक्स जीसीसी में फोर्क () का कार्य क्या मैं जीडीबी में 'मेमोरी एक्सेस' पर ब्रेकपॉइंट सेट कर सकता हूं?

Google-services.json वास्तव में क्या करता है?

मैं अपने वर्तमान ऐप पर Google Analytics और जीसीएम सेवाओं को जोड़ने पर काम करता हूं दोनों सेवाओं के क्रियान्वयन के लिए मार्गदर्शिका पर, Google डेवलपर को जेसन फाइल तैयार करने के लिए कहता है: google-services.json और इसे ऐप की रूट डायरेक्टरी के तहत रखता है।

मैंने पाया कि यहां तक ​​कि अगर मैं अपने ऐप से इस json फ़ाइल को हटा देता हूं, तो सेवाएं अभी भी काम करती हैं

बस सुनिश्चित करने के लिए जानना चाहते हैं, वास्तव में यह फाइल क्या है? इसका उपयोग क्या होता है और यह कैसे काम करता है?

Solutions Collecting From Web of "Google-services.json वास्तव में क्या करता है?"

मैंने Google सेवा प्लगइन और जेएसएन के बारे में थोड़ा सा जांच की और इस प्लगइन के स्रोत पाया।

पहली चीजें पहले

ग्रेडप्ले-प्लगइन Google- सेवा जो कि कक्षापथ द्वारा और संदर्भ के साथ संदर्भित होती है केवल एक बिल्ड-टाइम प्लगइन है! इसलिए यह केवल आपके ऐप की बिल्ड-प्रक्रिया को प्रभावित करता है, लेकिन रनटाइम-प्रक्रिया नहीं!

यह प्लग-इन केवल आपके ऐप में जल्दी-जल्दी Google सेवाओं को एकीकृत करने के लिए त्वरित-सहायता-सहायक के रूप में है। जाहिर है, प्रक्रिया कुछ जटिल है और प्रलेखित नहीं है, इसलिए Google को यह स्पष्ट करना चाहिए कि यह प्रक्रिया क्या करती है।

वास्तव में, मुझे प्लगइन संस्करण के लिए स्रोत कोड मिले com.google.gms: google-services: 1.4.0-beta3 और ऐपिनvites के बारे में इसमें कोई विशिष्ट संदर्भ नहीं मिला और न ही मुझे ऐप आमंत्रण के लिए कोई भी Google API मिला I (लेकिन हो सकता है कि यह केवल अपनी परियोजना आईडी के साथ एक सामान्य एपीआई परियोजना का उपयोग करता है, मैं यह कोशिश नहीं की)

यह क्या करता है

Google-services gradle-plugin आपकी ऐप-मॉड्यूल में उल्लेखित google-services.json फ़ाइल के लिए दिखता है। फिर यह प्रोजेक्ट आईडी और ट्रैकिंग-आईडी जैसी कॉन्फ़िगर सेटिंग्स को दिखता है, और Google API डेवलपर कंसोल द्वारा Google-services.json फ़ाइल में जेनरेट किया गया है। यह पाया गया सेटिंग से, एंड्रॉइड संसाधन मान निम्न पथ में उत्पन्न होते हैं:

$project.buildDir/generated/res/google-services/$variant.dirName/values/values.xml 

उदाहरण के लिए अपने ऐप का डीबग-बिल्ड:

 app/build/generated/res/google-services/debug/values/values.xml 

यदि आप जीसीएम ट्यूटोरियल का पालन करते हैं, तो JSON फाइल में एपीआई प्रोजेक्ट आईडी को निम्नलिखित एंड्रॉइड-संसाधन के रूप में शामिल किया जाएगा:

 <string name="gcm_defaultSenderId">project-id</string> 

तो यह प्लगइन और जेएसओओ फाइल आपके एप को चलाने या प्रकाशित करने के लिए जरूरी नहीं है, यह विशिष्ट Google API सुविधाओं के आसान एकीकरण के लिए कुछ बुनियादी एंड्रॉइड-संसाधन फ़ाइलों को उत्पन्न करने के लिए सिर्फ एक त्वरित स्टार्ट सहायक है।

नीचे दिए गए स्रोत कोड में नोटिस कि Google- सेवा प्लग इन हमेशा हर एप-वेरिएंट के लिए उन एंड्रॉइड-संसाधनों को उत्पन्न करती है जो आपके ऐप / build.gradle में परिभाषित होती हैं।

यदि आप यह नहीं चाहते हैं, तो आप उन व्युत्पन्न संसाधनों का उपयोग एप-वेरिएंट में करना चाहिए, और दूसरों को हटा दें। ऐप / बिल्ड.ग्रीड से लागू Google-services प्लगइन को हटाने के लिए मत भूलना, या फिर सभी ऐप-वेरिएंट के लिए पुनर्जन्म किया जाएगा।

यह क्या नहीं है

यह प्लगइन और जेएसओ-फाइल आपके ऐप के लिए Google-features की आंतरिक कामकाज को सीधे प्रभावित नहीं करती है! यदि आपने डेवलपर पर पुराने ट्यूटोरियल पहले ही रखे हैं, तो कैसे जीसीएम या गूगल एनालिटिक्स को समेकित करने के बारे में डेवलपर। एंड्रॉइड डाऊनलोड किया है, तो आपको या तो ग्रेडले-प्लगइन गूगल-सर्विसेज या गूगल-सर्विसेज। जेएसओएन फाइल को एकीकृत करने की ज़रूरत नहीं है!

सूचना के बारे में जहां मुझे स्रोत मिले

जब आप Google-services gradle-plugin एकीकृत करते हैं और अपनी परियोजना को समन्वयित करते हैं, तो Gradle स्वचालित रूप से इस तरह के पथ के लिए Google- सेवा निर्भरता डाउनलोड करती है (Windows पर, आपको अपने घर /। लिनक्स के लिए।

 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 

जिसमें gradle-plugin का सादे स्रोत कोड होता है

 GoogleServicesPlugin.groovy 

इसमें ऐप-वेरिएंट्स और पथों की बुनियादी परिभाषाओं का प्रबंधन शामिल है।

 GoogleServicesTask.java 

इसमें वास्तविक कार्य-परिभाषा शामिल है, निम्न विधि को देखने के लिए देखें कि यह वास्तव में क्या करता है:

 @TaskAction public void action() throws IOException { 

वास्तव में इस फाइल के लिए क्या है:

google-services.json में डेवलपर क्रेडेंशियल्स और कॉन्फ़िगरेशन सेटिंग शामिल हैं, जो कि GoogleApiClient से कनेक्ट करते समय सत्यापित करने के लिए आवश्यक है यद्यपि आपकी सेवा आपके परीक्षण उपकरण के साथ ठीक काम कर रही है क्योंकि यह आपके डेवलपर खाते का पता लगा रही है लेकिन सार्वजनिक रूप से आपका ऐप जारी करने के बाद, यह जेएसएन फाइल के बिना काम नहीं करेगा। तो इसे हटाएं नहीं।

आधिकारिक दस्तावेज कहते हैं:

एप्लिकेशन एक GoogleApiClient बनाता है, यह निर्दिष्ट करता है कि किस प्रकार के स्कोप और एपीआई आवेदन करेंगे। जब GoogleApiClient कनेक्ट करता है, तो उपयोगकर्ता साइन इन होता है।

देखें कि यह कैसे काम करता है अनुभाग

अपने मॉड्यूल में google-services.json जोड़ें और एक स्वच्छ और एक पुनरारंभ करें। आपकी प्रोजेक्ट प्रॉपर्टी के साथ ऐप / बिल्ड / जेनरेट / रेस / google-services / debug / values ​​/ values.xml में एक एक्सएमएल फाइल उत्पन्न होगी और आप आसानी से सामान्य एक्सएमएल स्ट्रिंग की तरह पहुंच सकते हैं। उदाहरण:

 String serverClientId = getString(R.string.default_web_client_id); 

google-service.json डॉक्टर में सभी स्ट्रिंग्स और मोमरी जानकारी के साथ एक सूची है