परिचय
अपने Android में Google API या Firebase की सेवाएं चालू करने के हिस्से के तौर पर
तो आपको अपने साथ google-services
प्लगिन जोड़ना पड़ सकता है
build.gradle
फ़ाइल:
dependencies {
classpath 'com.google.gms:google-services:4.4.2'
// ...
}
google-services
प्लगिन के दो मुख्य फ़ंक्शन हैं:
google-services.json
फ़ाइल प्रोसेस करें और Android बनाएं ऐसे संसाधन जिनका इस्तेमाल आपके ऐप्लिकेशन की कोड. ज़्यादा जानकारी के लिए JSON फ़ाइल जोड़ना देखें.अपनी सेवाओं के लिए ज़रूरी बेसिक लाइब्रेरी के लिए डिपेंडेंसी जोड़ें चालू किया गया. इस चरण के लिए ज़रूरी है कि आप Google सेवाओं के ग्रेडल को लागू करें प्लगिन की मदद से अपनी
app/build.gradle
फ़ाइल में प्लगिन का इस्तेमाल करें, जैसे:
apply plugin: 'com.google.gms.google-services'
इस चरण का नतीजा देखने के लिए,
./gradlew :app:dependencies
.
JSON फ़ाइल जोड़ना
google-services.json
फ़ाइल को आम तौर पर
app/
डायरेक्ट्री (Android Studio ऐप्लिकेशन मॉड्यूल के रूट में). जैसे
वर्शन 2.2.0
का प्लग इन, बिल्ड टाइप और प्रॉडक्ट फ़्लेवर के साथ काम करता है
खास JSON फ़ाइलों के लिए. नीचे दिए गए सभी डायरेक्ट्री स्ट्रक्चर मान्य हैं:
// dogfood and release are build types. app/ google-services.json src/dogfood/google-services.json src/release/google-services.json ...
ध्यान दें: रिलीज़ डायरेक्ट्री में google-services.json फ़ाइल देने से, ताकि आप अपने प्रोडक्शन APKs के लिए एक अलग Firebase प्रोजेक्ट मैनेज कर सकें.
जब प्रॉडक्ट फ़्लेवर का इस्तेमाल किया जाता है, तब डायरेक्ट्री के ये ज़्यादा पेचीदा स्ट्रक्चर होते हैं भी मान्य है.
// free and paid are product flavors. app/ google-services.json src/dogfood/paid/google-services.json src/release/free/google-services.json ...
JSON फ़ाइल प्रोसेस की जा रही है
google-services.json
फ़ाइल का स्ट्रक्चर इस तरह है:
{ "project_info": {...}, "client": [...], }
project_info
ऑब्जेक्ट में आपकी
प्रोजेक्ट में शामिल हैं, जबकि client
कलेक्शन के हर सदस्य में जानकारी मौजूद होती है
प्रोजेक्ट में जोड़े गए क्लाइंट (Android ऐप्लिकेशन) के बारे में जानकारी.
आपके Android ऐप्लिकेशन के लिए JSON फ़ाइल प्रोसेस करते समय, प्लगिन सिर्फ़
client
ऑब्जेक्ट जो आपके पैकेज के नाम (मौजूदा बिल्ड के लिए) से मेल खाता है
टाइप) पर आधारित होता है:
client
कलेक्शन के हर सदस्य के लिए:client_info/android_client_info/package_name
की वैल्यू जांचें- अगर पैकेज का नाम इस वैल्यू से मैच करता है, तो मेंबर ऑब्जेक्ट दिखाएं.
- अगर
client
का कोई भी सदस्य पैकेज के नाम से मेल नहीं खाता है, तो अपवाद लागू किया जाता है.
इस दस्तावेज़ के बाकी हिस्से के लिए, हम {YOUR_CLIENT}
का इस्तेमाल करेंगे, ताकि
ऊपर दी गई प्रोसेस से तय की गई client
रेंज का सदस्य.
JSON प्रोसेसिंग का मुख्य नतीजा दो एक्सएमएल फ़ाइलें बनाना है, जिन्हें आपने आपके Java कोड में Android संसाधन का रेफ़रंस दे सकता है. नीचे इसका एक उदाहरण है हर फ़ाइल:
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>
एक्सएमएल फ़ाइलों का हर वैल्यू, google-services.json
में मौजूद होता है
फ़ाइल है. अगर आपके Android प्रोजेक्ट में कुछ कॉन्फ़िगरेशन है
जो आपको google-services
प्लगिन का इस्तेमाल करने से रोकता है, तो
इन वैल्यू का इस्तेमाल करके, मैन्युअल तरीके से एक्सएमएल फ़ाइलों को सुरक्षित तरीके से फिर से बनाएं:
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
समस्या का हल
सवाल: बिल्डिंग बनाते समय मुझे गड़बड़ी का यह मैसेज मिलता है: "फ़ाइल मॉड्यूल रूट फ़ोल्डर में google-services.json मौजूद नहीं है. Google की सेवाएं प्लगिन इसके बिना काम नहीं कर सकता".
जवाब: Firebase कंसोल की मदद से,
google-services.json
डाउनलोड करें.
इसके अलावा, ज़्यादातर एपीआई की क्विकस्टार्ट गाइड में
यह फ़ाइल जनरेट कर रहा है.
google-services.json
फ़ाइल डाउनलोड करने के बाद, उसे कॉपी करें
आपके Android Studio प्रोजेक्ट के app/
फ़ोल्डर में या
अगर एक से ज़्यादा बिल्ड टाइप का इस्तेमाल किया जा रहा है, तो app/src/{build_type}
फ़ोल्डर.
सवाल: मुझे "R.string.gcm_defaultSenderId" प्रतीक नहीं मिल रहा है, "R.xml.global_tracker" वगैरह.
जवाब: पक्का करें कि आपकी build.gradle
फ़ाइल में मौजूद पैकेज का नाम
google-services.json
बनाते समय डाला गया पैकेज नाम
फ़ाइल से लिए जाते हैं. अगर आपको पक्के तौर पर नहीं पता है, तो प्रोसेस शुरू करने का तरीका फिर से देखें और
एक नई json फ़ाइल बनानी चाहिए.