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