शुरुआती जानकारी
अपने Android ऐप्लिकेशन में Google API या Firebase सेवाओं को चालू करने के लिए, आपको अपनी build.gradle
फ़ाइल में google-services
प्लगिन जोड़ना पड़ सकता है:
dependencies {
classpath 'com.google.gms:google-services:4.4.0'
// ...
}
google-services
प्लगिन के दो मुख्य फ़ंक्शन हैं:
google-services.json
फ़ाइल को प्रोसेस करें और ऐसे Android संसाधन बनाएं जिनका इस्तेमाल आपके ऐप्लिकेशन के कोड में किया जा सके. ज़्यादा जानकारी के लिए, JSON फ़ाइल जोड़ना देखें.आपने जिन सेवाओं को चालू किया है उनके लिए ज़रूरी बेसिक लाइब्रेरी के लिए डिपेंडेंसी जोड़ें. इस चरण के लिए ज़रूरी है कि आप अपनी
app/build.gradle
फ़ाइल में Google Services 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 फ़ाइल देने से, अपने प्रोडक्शन APK के लिए एक अलग 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 Services प्लगिन इसके बिना काम नहीं कर सकता".
जवाब: 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 फ़ाइल पाएं.