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