Google की सेवाओं का Gradle प्लग इन

Stay organized with collections Save and categorize content based on your preferences.

सुविधा के बारे में जानकारी

अपने Android ऐप्लिकेशन में Google API या Firebase सेवाओं को चालू करने के लिए, आपको google-services फ़ाइल को अपनी build.gradle फ़ाइल में जोड़ना पड़ सकता है:

dependencies {
    classpath 'com.google.gms:google-services:4.3.15'
    // ...
}

google-services प्लग इन के दो मुख्य फ़ंक्शन हैं:

  1. google-services.json फ़ाइल प्रोसेस करें और ऐसे Android रिसॉर्स बनाएं जो आपके ऐप्लिकेशन के कोड में इस्तेमाल किए जा सकते हैं. ज़्यादा जानकारी के लिए, JSON फ़ाइल जोड़ना देखें.
  2. आपके पास चालू की गई सेवाओं के लिए ज़रूरी बेसिक लाइब्रेरी के लिए डिपेंडेंसी जोड़ना. इस चरण के लिए, आपको अपनी 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 फ़ाइल देने से, अपने प्रोडक्शन 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/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 फ़ाइल पाएं.