अपने Android प्रोजेक्ट में Firebase जोड़ने के लिए, आपको अपने प्रोजेक्ट में Gradle प्लग इन और कॉन्फ़िगरेशन फ़ाइल जोड़नी होगी.
अगर आपने Firebase कंसोल, Management REST API या Firebase सीएलआई का इस्तेमाल करके, अपने Android प्रोजेक्ट में Firebase जोड़ा है, तो आपको अपने प्रोजेक्ट में Gradle प्लग इन और JSON कॉन्फ़िगरेशन फ़ाइल को मैन्युअल तरीके से जोड़ना होगा. हालांकि, Firebase Assistant for Android Studio का इस्तेमाल करने पर, सेटअप के दौरान ये टास्क अपने-आप पूरे हो जाते हैं.
Gradle प्लगिन जोड़ना
Google services Gradle plugin () को अपनी build.gradle फ़ाइल में जोड़ें:
dependencies {
classpath 'com.google.gms:google-services:4.5.0'
// ...
}
Google services Gradle प्लगिन के दो मुख्य फ़ंक्शन हैं:
यह
कॉन्फ़िगरेशन फ़ाइल को प्रोसेस करता है और Android रिसॉर्स बनाता है. इनका इस्तेमाल आपके ऐप्लिकेशन के कोड में किया जा सकता है.google-services.json यह उन सेवाओं के लिए ज़रूरी बुनियादी लाइब्रेरी की डिपेंडेंसी जोड़ता है जिन्हें आपने चालू किया है. इस चरण के लिए, आपको अपनी
app/build.gradleफ़ाइल में Google की सेवाओं का Gradle प्लगिन लागू करना होगा. इसके लिए, यह तरीका अपनाएं:
apply plugin: 'com.google.gms.google-services'./gradlew :app:dependenciesको चलाकर, इस चरण का नतीजा देखा जा सकता है.
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
...
जब ऐप्लिकेशन टाइप का इस्तेमाल किया जाता है, तो ज़्यादा जटिल डायरेक्ट्री स्ट्रक्चर भी मान्य होते हैं.
// free and paid are product flavors.
app/
google-services.json
src/dogfood/paid/google-services.json
src/release/free/google-services.json
...
JSON कॉन्फ़िगरेशन फ़ाइल को प्रोसेस करने का तरीका
कॉन्फ़िगरेशन फ़ाइल का बुनियादी स्ट्रक्चर इस तरह का होता है:
{
"project_info": {...},
"client": [...],
}
project_info ऑब्जेक्ट में आपके प्रोजेक्ट की सामान्य जानकारी होती है. वहीं, client कलेक्शन के हर सदस्य में उन क्लाइंट (Android ऐप्लिकेशन) की जानकारी होती है जिन्हें आपने प्रोजेक्ट में जोड़ा है.
आपके Android ऐप्लिकेशन के लिए JSON फ़ाइल को प्रोसेस करते समय, प्लगिन सिर्फ़ उस client ऑब्जेक्ट का इस्तेमाल करता है जो आपके पैकेज के नाम (मौजूदा बिल्ड टाइप के लिए) से मेल खाता है. यह इस लॉजिक पर आधारित होता है:
clientकलेक्शन के हर सदस्य के लिए, प्लगिनclient_info/android_client_info/package_nameकी वैल्यू की जांच करता है. अगर पैकेज का नाम इस वैल्यू से मेल खाता है, तो यह मेंबर ऑब्जेक्ट दिखाता है.अगर
clientका कोई भी सदस्य पैकेज के नाम से मेल नहीं खाता है, तो प्लग इन एक अपवाद दिखाता है.
इस दस्तावेज़ के बाकी हिस्से में, YOUR_CLIENT का इस्तेमाल client कलेक्शन के उस सदस्य के लिए किया जाता है जो ऊपर बताए गए लॉजिक से तय होता है.
एक्सएमएल फ़ाइलें बनाना
JSON प्रोसेसिंग का मुख्य नतीजा, दो एक्सएमएल फ़ाइलें बनाना है. इन्हें अपने कोड में 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>
एक्सएमएल फ़ाइलों में मौजूद वैल्यू
एक्सएमएल फ़ाइलों में मौजूद हर वैल्यू, यहां दी गई जगहों पर कॉन्फ़िगरेशन फ़ाइल में मौजूद होती है. अगर आपके Android प्रोजेक्ट में कोई ऐसा कॉन्फ़िगरेशन है जिसकी वजह से Gradle प्लग इन का इस्तेमाल नहीं किया जा सकता, तो इन वैल्यू का इस्तेमाल करके एक्सएमएल फ़ाइलों को मैन्युअल तरीके से फिर से बनाया जा सकता है.
google_app_idYOUR_CLIENT/client_info/mobilesdk_app_idgcm_defaultSenderIdproject_info/project_numberdefault_web_client_idYOUR_CLIENT/oauth_client/client_id (client_type == 3)ga_trackingIdYOUR_CLIENT/services/analytics-service/analytics_property/tracking_idfirebase_database_urlproject_info/firebase_urlgoogle_api_keyYOUR_CLIENT/api_key/current_keygoogle_crash_reporting_api_keyYOUR_CLIENT/api_key/current_keyproject_idproject_info/project_id
समस्या का हल
ऐप्लिकेशन बनाते समय, मुझे गड़बड़ी का यह मैसेज मिलता है: File google-services.json is missing from module root folder. The Google Services Plugin cannot function without it.
Firebase कंसोल की मदद से, कॉन्फ़िगरेशन फ़ाइल डाउनलोड की जा सकती है.
कॉन्फ़िगरेशन फ़ाइल डाउनलोड करने के बाद, उसे अपने Android Studio प्रोजेक्ट के app/ फ़ोल्डर में कॉपी करें. अगर एक से ज़्यादा बिल्ड टाइप का इस्तेमाल किया जा रहा है, तो उसे app/src/{build_type} फ़ोल्डर में कॉपी करें.
मुझे R.string.gcm_defaultSenderId या R.xml.global_tracker जैसे सिंबल नहीं दिख रहे हैं.
पक्का करें कि आपकी build.gradle फ़ाइल में मौजूद पैकेज का नाम, google-services.json फ़ाइल बनाते समय डाले गए पैकेज के नाम से मेल खाता हो. अगर आपको पक्के तौर पर नहीं पता है, तो 'शुरू करें' फ़्लो को फिर से चलाएं और नई JSON फ़ाइल पाएं.