Gradle का इस्तेमाल करके, जांच करने वाले लोगों को Android ऐप्लिकेशन उपलब्ध कराना

App Distribution Gradle प्लग इन का इस्तेमाल करके, Android बिल्ड प्रोसेस में App Distribution को इंटिग्रेट किया जा सकता है. प्लगिन की मदद से, ऐप्लिकेशन की ग्रेडल फ़ाइल में टेस्टर और रिलीज़ नोट की जानकारी जोड़ी जा सकती है. इससे, अपने ऐप्लिकेशन के अलग-अलग बिल्ड टाइप और वैरिएंट के लिए डिस्ट्रिब्यूशन को कॉन्फ़िगर किया जा सकता है.

इस गाइड में यह बताया गया है कि App Distribution Gradle प्लग इन का इस्तेमाल करके, टेस्टर को Android ऐप्लिकेशन बंडल (एएबी) कैसे डिस्ट्रिब्यूट किया जा सकता है.

App Distribution, Google Play की संगठन में काम करने वालों के साथ ऐप्लिकेशन शेयर करने की सेवा के साथ इंटिग्रेट होता है. इससे आपके अपलोड किए गए AABs को प्रोसेस करने और उन APKs को उपलब्ध कराने में मदद मिलती है जो आपके टेस्टर के डिवाइस कॉन्फ़िगरेशन के हिसाब से ऑप्टिमाइज़ किए गए हैं. एएबी डिस्ट्रिब्यूट करके ये काम किए जा सकते हैं:

  • आपके टेस्टर के डिवाइस के हिसाब से ऑप्टिमाइज़ किए गए, ऑप्टिमाइज़ किए गए ऐसे APK चलाएं जो Google Play उपलब्ध कराता है.

  • डिवाइस से जुड़ी समस्याओं का पता लगाना और उन्हें डीबग करना.

  • Play Feature Delivery और Play ऐसेट डिलीवरी जैसी ऐप्लिकेशन बंडल की सुविधाओं की जांच करें.

  • अपने ऐप्लिकेशन के टेस्टर के लिए, डाउनलोड का साइज़ कम करें.

ज़रूरी अनुमतियां

एएबी को App Distribution पर अपलोड करने के लिए, आपको अपने Firebase ऐप्लिकेशन को Google Play में किसी ऐप्लिकेशन से लिंक करना होगा. ये कार्रवाइयां करने के लिए, आपके पास ऐक्सेस का ज़रूरी लेवल होना चाहिए.

अगर आपके पास Firebase का ज़रूरी ऐक्सेस नहीं है, तो Firebase प्रोजेक्ट के मालिक से कहें कि वे Firebase कंसोल IAM सेटिंग के ज़रिए, आपको ज़रूरी भूमिका असाइन करें. अगर Firebase प्रोजेक्ट को ऐक्सेस करने के बारे में आपका कोई सवाल है, तो "Firebase प्रोजेक्ट की अनुमतियां और ऐक्सेस" से जुड़े अक्सर पूछे जाने वाले सवालों को देखें. इनमें, किसी मालिक को ढूंढने या असाइन करने जैसे सवाल शामिल हैं.

नीचे दी गई टेबल, Firebase ऐप्लिकेशन को Google Play में किसी ऐप्लिकेशन से लिंक करने के साथ-साथ एएबी अपलोड करने पर लागू होती है.

Firebase कंसोल में कार्रवाई आईएएम की ज़रूरी अनुमति आईएएम की ऐसी भूमिका(भूमिकाएं) जिनमें डिफ़ॉल्ट रूप से ज़रूरी अनुमतियां शामिल होती हैं अन्य ज़रूरी भूमिका
Firebase ऐप्लिकेशन को Google Play पर किसी ऐप्लिकेशन से लिंक करना firebase.playLinks.update इनमें से कोई एक भूमिका: एडमिन के तौर पर, Google Play डेवलपर खाते का ऐक्सेस
App Distribution पर एएबी अपलोड करना firebaseappdistro.releases.update इनमें से कोई एक भूमिका: ––

वेब कंटेनर इंस्टॉल करने से पहले

  1. अगर आपने पहले से ऐसा नहीं किया है, तो Firebase को अपने Android प्रोजेक्ट में जोड़ें. इस वर्कफ़्लो के आखिर में, आपके Firebase प्रोजेक्ट में एक Firebase Android ऐप्लिकेशन होगा.

    अगर किसी अन्य Firebase प्रॉडक्ट का इस्तेमाल नहीं किया जा रहा है, तो आपको सिर्फ़ एक प्रोजेक्ट बनाना होगा और अपना ऐप्लिकेशन रजिस्टर करना होगा. अगर आपको अन्य प्रॉडक्ट इस्तेमाल करने हैं, तो Firebase को अपने Android प्रोजेक्ट में जोड़ने के सभी चरणों को ज़रूर पूरा करें.

  2. Google Play से Firebase लिंक बनाने और एएबी अपलोड करने के लिए, पक्का करें कि आपका ऐप्लिकेशन इन शर्तों को पूरा करता हो:

    • Google Play और Firebase Android ऐप्लिकेशन, दोनों में एक ही पैकेज नाम का इस्तेमाल करके रजिस्टर किया गया है.

    • Google Play में मौजूद ऐप्लिकेशन को ऐप्लिकेशन के डैशबोर्ड पर सेट अप किया जाता है और उसे Google Play के किसी एक ट्रैक (इंटरनल टेस्टिंग, क्लोज़्ड टेस्टिंग, ओपन टेस्टिंग या प्रोडक्शन) पर उपलब्ध कराया जाता है.

    • Google Play पर ऐप्लिकेशन की समीक्षा पूरी हो गई है और ऐप्लिकेशन को पब्लिश कर दिया गया है. अगर ऐप्लिकेशन का स्टेटस कॉलम में इनमें से कोई एक स्टेटस दिखता है, तो आपका ऐप्लिकेशन पब्लिश कर दिया जाएगा: इंटरनल टेस्टिंग (ड्राफ़्ट की इंटरनल टेस्टिंग नहीं), क्लोज़्ड टेस्टिंग, ओपन टेस्टिंग या प्रोडक्शन.

  3. अपने Firebase के Android ऐप्लिकेशन को Google Play डेवलपर खाते से जोड़ें:

    1. Firebase कंसोल में, अपने प्रोजेक्ट सेटिंग पर जाएं. इसके बाद, इंटिग्रेशन टैब चुनें.

    2. Google Play कार्ड पर जाकर, जोड़ें पर क्लिक करें.
      अगर आपके पास पहले से Google Play के लिंक हैं, तो मैनेज करें पर क्लिक करें.

    3. App Distribution इंटिग्रेशन को चालू करने और Google Play से लिंक करने के लिए Firebase Android ऐप्लिकेशन चुनने के लिए, स्क्रीन पर दिए गए निर्देशों का पालन करें.

    Google Play से लिंक करने के बारे में ज़्यादा जानें.

पहला चरण. अपना Android प्रोजेक्ट सेट अप करना

  1. अपनी रूट-लेवल (प्रोजेक्ट-लेवल) की Gradle फ़ाइल (<project>/build.gradle.kts या <project>/build.gradle) में, App Distribution Gradle प्लग इन को डिपेंडेंसी के तौर पर जोड़ें:

    Kotlin

    plugins {
        // ...
        id("com.android.application") version "7.3.0" apply false
    
        // Make sure that you have the Google services Gradle plugin dependency
        id("com.google.gms.google-services") version "4.4.2" apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id("com.google.firebase.appdistribution") version "5.0.0" apply false
    }
    

    Groovy

    plugins {
        // ...
        id 'com.android.application' version '7.3.0' apply false
    
        // Make sure that you have the Google services Gradle plugin dependency
        id 'com.google.gms.google-services' version '4.4.2' apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id 'com.google.firebase.appdistribution' version '5.0.0' apply false
    }
    
  2. अपने मॉड्यूल (ऐप्लिकेशन-लेवल) की Gradle फ़ाइल (आम तौर पर <project>/<app-module>/build.gradle.kts या <project>/<app-module>/build.gradle) में, App Distribution Gradle प्लग इन जोड़ें:

    Kotlin

    plugins {
      id("com.android.application")
    
      // Make sure that you have the Google services Gradle plugin
      id("com.google.gms.google-services")
    
      // Add the App Distribution Gradle plugin
      id("com.google.firebase.appdistribution")
    }
    

    Groovy

    plugins {
      id 'com.android.application'
    
      // Make sure that you have the Google services Gradle plugin
      id 'com.google.gms.google-services'
    
      // Add the App Distribution Gradle plugin
      id 'com.google.firebase.appdistribution'
    }
    
  3. अगर किसी कॉर्पोरेट प्रॉक्सी या फ़ायरवॉल का इस्तेमाल किया जा रहा है, तो यहां दी गई Java सिस्टम प्रॉपर्टी जोड़ें. इसकी मदद से, App Distribution की मदद से आपके डिस्ट्रिब्यूशन को Firebase पर अपलोड किया जा सकता है:

    -Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password
    

दूसरा चरण. Firebase की मदद से पुष्टि करें

Gradle प्लग इन का इस्तेमाल करने से पहले, आपको इनमें से किसी एक तरीके से अपने Firebase प्रोजेक्ट की पुष्टि करनी होगी. अगर पुष्टि करने के किसी दूसरे तरीके का इस्तेमाल नहीं किया जाता है, तो डिफ़ॉल्ट रूप से Gradle प्लग इन, Firebase सीएलआई से क्रेडेंशियल की जांच करता है.

तीसरा चरण. डिस्ट्रिब्यूशन की अपनी प्रॉपर्टी कॉन्फ़िगर करना

अपने मॉड्यूल (ऐप्लिकेशन-लेवल) की Gradle फ़ाइल (आम तौर पर <project>/<app-module>/build.gradle.kts या <project>/<app-module>/build.gradle) में, कम से कम एक firebaseAppDistribution सेक्शन जोड़कर App Distribution को कॉन्फ़िगर करें.

उदाहरण के लिए, टेस्टर को release बिल्ड डिस्ट्रिब्यूट करने के लिए, इन निर्देशों का पालन करें::

Kotlin

import com.google.firebase.appdistribution.gradle.firebaseAppDistribution

android {

  // ...

  buildTypes {
      getByName("release") {
          firebaseAppDistribution {
              artifactType = "AAB"
              releaseNotesFile = "/path/to/releasenotes.txt"
              testers = "ali@example.com, bri@example.com, cal@example.com"
          }
      }
  }

  // ...
}

Groovy

android {

  // ...

  buildTypes {
      release {
          firebaseAppDistribution {
              artifactType="AAB"
              releaseNotesFile="/path/to/releasenotes.txt"
              testers="ali@example.com, bri@example.com, cal@example.com"
          }
      }
  }

  // ...
}

बिल्ड टाइप और प्रॉडक्ट के फ़्लेवर के लिए, App Distribution को कॉन्फ़िगर किया जा सकता है.

उदाहरण के लिए, debug और release बिल्ड को "डेमो" और "फ़ुल" प्रॉडक्ट फ़्लेवर में डिस्ट्रिब्यूट करने के लिए, इन निर्देशों का पालन करें:

Kotlin

import com.google.firebase.appdistribution.gradle.firebaseAppDistribution

android {

  // ...

  buildTypes {
      getByName("debug") {...}
      getByName("release") {...}
  }

  flavorDimensions += "version"
  productFlavors {
      create("demo") {
          dimension = "version"
          firebaseAppDistribution {
              releaseNotes = "Release notes for demo version"
              testers = "demo@testers.com"
          }
      }
      create("full") {
          dimension = "version"
          firebaseAppDistribution {
              releaseNotes = "Release notes for full version"
              testers = "full@testers.com"
          }
      }
  }

  // ...
}

Groovy

android {

  // ...

  buildTypes {
      debug {...}
      release {...}
  }

  flavorDimensions "version"
  productFlavors {
      demo {
          dimension "version"
          firebaseAppDistribution {
              releaseNotes="Release notes for demo version"
              testers="demo@testers.com"
          }
      }
      full {
          dimension "version"
          firebaseAppDistribution {
              releaseNotes="Release notes for full version"
              testers="full@testers.com"
          }
      }
  }

  // ...
}

डिस्ट्रिब्यूशन को कॉन्फ़िगर करने के लिए, इन पैरामीटर का इस्तेमाल करें:

App Distribution बिल्ड पैरामीटर
appId

आपके ऐप्लिकेशन का Firebase ऐप्लिकेशन आईडी. इसका इस्तेमाल सिर्फ़ तब किया जाता है, जब आपने Google Services Gradle प्लग इन इंस्टॉल न किया हो. ऐप्लिकेशन आईडी google-services.json फ़ाइल में या सामान्य सेटिंग पेज पर Firebase कंसोल में मिल सकता है. आपकी build.gradle फ़ाइल की वैल्यू, google-services प्लगिन से मिलने वाले वैल्यू आउटपुट को बदल देती है.

appId="1:1234567890:android:321abc456def7890"
serviceCredentialsFile

आपके सेवा खाते की निजी कुंजी वाली JSON फ़ाइल का पाथ. सिर्फ़ तब ज़रूरी है, जब सेवा खाते की पुष्टि करने की सुविधा का इस्तेमाल किया जा रहा हो.

artifactType

यह आपके ऐप्लिकेशन का फ़ाइल टाइप बताता है. "AAB" या "APK" पर सेट किया जा सकता है.

artifactPath

उस APK या एएबी फ़ाइल का ऐब्सलूट पाथ जिसे आपको अपलोड करना है.

releaseNotes या releaseNotesFile

इस बिल्ड के लिए प्रॉडक्ट की जानकारी वाला दस्तावेज़.

आपके पास सीधे रिलीज़ नोट या सामान्य टेक्स्ट वाली फ़ाइल का पाथ बताने का विकल्प है.

testers या testersFile

टेस्टर के ऐसे ईमेल पते जिनके लिए आपको बिल्ड डिस्ट्रिब्यूट करने हैं.

टेस्टर की जानकारी, ईमेल पतों की कॉमा-सेपरेटेड लिस्ट के तौर पर दी जा सकती है:

testers="ali@example.com, bri@example.com, cal@example.com"

इसके अलावा, ऐसी फ़ाइल का पाथ भी बताया जा सकता है जिसमें ईमेल पतों की कॉमा-सेपरेटेड लिस्ट हो:

testersFile="/path/to/testers.txt"
groups या groupsFile

टेस्टर के वे ग्रुप जिनमें आपको बिल्ड डिस्ट्रिब्यूट करने हैं (टेस्टर को मैनेज करना देखें). ग्रुप की जानकारी, ग्रुप के अन्य नाम का इस्तेमाल करके दी जाती है. इन्हें Firebase App Distribution कंसोल के टेस्टर टैब में देखा जा सकता है.

आप इन ग्रुप को, कॉमा लगाकर अलग किए गए, ग्रुप के उपनामों की सूची के तौर पर बता सकते हैं:

groups="qa-team, android-testers"

इसके अलावा, किसी ऐसी फ़ाइल का पाथ भी तय किया जा सकता है जिसमें ग्रुप के अन्य नामों की, कॉमा लगाकर अलग की गई सूची हो:

groupsFile="/path/to/tester-groups.txt"
testDevices या testDevicesFile

नीचे दिए गए डिस्ट्रिब्यूशन टाइप, ऑटोमेटेड टेस्टर बीटा सुविधा का हिस्सा हैं.

जिन टेस्ट डिवाइसों पर आपको बिल्ड डिस्ट्रिब्यूट करना है (अपने-आप होने वाली जांच देखें).

टेस्ट डिवाइस को डिवाइस की खास बातों की सेमी-कॉलन से अलग की गई सूची के तौर पर बताया जा सकता है:

testDevices="model=shiba,version=34,locale=en,orientation=portrait;model=b0q,version=33,locale=en,orientation=portrait"

इसके अलावा, सेमीकॉलन से अलग की गई डिवाइस की खास बातों की सूची वाली फ़ाइल का पाथ भी तय किया जा सकता है:

testDevicesFile="/path/to/testDevices.txt"
testUsername

ऑटोमेटेड टेस्ट के दौरान अपने-आप लॉगिन होने के लिए उपयोगकर्ता नाम.

testPassword या testPasswordFile

ऑटोमैटिक लॉगिन के लिए पासवर्ड, जिसका इस्तेमाल ऑटोमेटेड टेस्ट के दौरान किया जाएगा.

या, आप पासवर्ड वाली सादी टेक्स्ट फ़ाइल का पाथ तय कर सकते हैं:

testPasswordFile="/path/to/testPassword.txt"
testUsernameResource

ऑटोमेटेड टेस्ट के दौरान अपने-आप लॉगिन होने के लिए, उपयोगकर्ता नाम फ़ील्ड के संसाधन का नाम.

testPasswordResource

ऑटोमेटेड टेस्ट के दौरान अपने-आप लॉगिन होने के लिए, पासवर्ड फ़ील्ड के लिए संसाधन का नाम.

testNonBlocking

एसिंक्रोनस तरीके से ऑटोमेटेड टेस्ट चलाएं. अपने-आप होने वाले टेस्ट के नतीजों के लिए, Firebase कंसोल पर जाएं.

stacktrace

यह उपयोगकर्ता अपवादों के लिए स्टैकट्रेस को प्रिंट करता है. इससे, गड़बड़ियों को डीबग करने में मदद मिलती है.

चौथा चरण. टेस्टर को अपना ऐप्लिकेशन उपलब्ध कराना

  1. आखिर में, अपने टेस्ट ऐप्लिकेशन को पैकेज करने और टेस्टर को न्योता भेजने के लिए, अपने प्रोजेक्ट के Gradle रैपर की मदद से BUILD-VARIANT और appDistributionUploadBUILD-VARIANT टारगेट बनाएं. यहां BUILD-VARIANT प्रॉडक्ट का वैकल्पिक फ़्लेवर और बिल्ड टाइप है, जिसे आपने पिछले चरण में कॉन्फ़िगर किया था. प्रॉडक्ट के फ़्लेवर के बारे में ज़्यादा जानकारी के लिए, बिल्ड के वैरिएंट कॉन्फ़िगर करना लेख पढ़ें.

    उदाहरण के लिए, release बिल्ड वैरिएंट का इस्तेमाल करके अपना ऐप्लिकेशन लोगों तक पहुंचाने के लिए, यहां दिया गया कमांड चलाएं:

    ./gradlew bundleRelease appDistributionUploadRelease
    

    इसके अलावा, अगर आपने अपने Google खाते की मदद से पुष्टि की है और Gradle बिल्ड फ़ाइल में क्रेडेंशियल नहीं दिए हैं, तो FIREBASE_TOKEN वैरिएबल शामिल करें:

    export FIREBASE_TOKEN=1/a1b2c3d4e5f67890
    ./gradlew --stop // Only needed for environment variable changes
    ./gradlew bundleRelease appDistributionUploadRelease
    
  2. आपके पास --<property-name>=<property-value> के रूप में कमांड लाइन आर्ग्युमेंट पास करके, अपनी build.gradle फ़ाइल में सेट की गई वैल्यू को बदलने का भी विकल्प है. उदाहरण के लिए:

    • App Distribution पर डीबग बिल्ड अपलोड करने के लिए:

      ./gradlew bundleDebug appDistributionUploadDebug
          --artifactType="AAB"
      
    • अतिरिक्त टेस्टर को न्योता देने या अपने Firebase प्रोजेक्ट से मौजूदा टेस्टर को हटाने के लिए:

      ./gradlew appDistributionAddTesters
          --projectNumber=<project_number>
          --emails="anothertester@email.com, moretesters@email.com"
      ./gradlew appDistributionRemoveTesters
          --projectNumber=<project_number>
          --emails="anothertester@email.com, moretesters@email.com"
      

      आपके Firebase प्रोजेक्ट में टेस्टर को जोड़ लेने के बाद, उसे अलग-अलग रिलीज़ में जोड़ा जा सकता है. हटाए गए टेस्टर, आपके प्रोजेक्ट से जुड़ी रिलीज़ को ऐक्सेस नहीं कर पाएंगे. हालांकि, वे कुछ समय तक आपकी रिलीज़ को ऐक्सेस कर सकते हैं.

    टेस्टर के बारे में बताने के लिए, --emails के बजाय --file="/path/to/testers.txt" का इस्तेमाल भी किया जा सकता है.

    appDistributionAddTesters और appDistributionRemoveTesters टास्क इन आर्ग्युमेंट को भी स्वीकार करते हैं:

    • projectNumber: आपके Firebase प्रोजेक्ट का नंबर.

    • serviceCredentialsFile: आपकी Google सेवा क्रेडेंशियल फ़ाइल का पाथ. अपलोड ऐक्शन के लिए इसी तर्क का इस्तेमाल किया जाता है.

रिलीज़ अपलोड होने के बाद, Gradle प्लग इन, इन लिंक का आउटपुट देता है. इन लिंक की मदद से, बाइनरी को मैनेज किया जा सकता है. साथ ही, यह पक्का किया जा सकता है कि टेस्टर और अन्य डेवलपर के पास सही रिलीज़ है या नहीं:

  • firebase_console_uri - Firebase कंसोल का लिंक, जिस पर सिंगल रिलीज़ दिखाया जाता है. आप इस लिंक को अपने संगठन के दूसरे डेवलपर के साथ शेयर कर सकते हैं.
  • testing_uri - टेस्टर अनुभव में रिलीज़ का लिंक (Android का नेटिव ऐप्लिकेशन) जिसकी मदद से टेस्टर, रिलीज़ की जानकारी देख सकते हैं और ऐप्लिकेशन को अपने डिवाइस पर इंस्टॉल कर सकते हैं. लिंक का इस्तेमाल करने के लिए, टेस्टर को रिलीज़ का ऐक्सेस चाहिए.
  • binary_download_uri - हस्ताक्षर किया गया ऐसा लिंक जो सीधे ऐप्लिकेशन बाइनरी (APK या एएबी फ़ाइल) को डाउनलोड और इंस्टॉल करता है. लिंक की समयसीमा एक घंटे के बाद काम नहीं करती.

बिल्ड डिस्ट्रिब्यूट करने के बाद, यह Firebase कंसोल के App Distribution डैशबोर्ड में 150 दिनों (पांच महीने) तक उपलब्ध रहता है. बिल्ड की समयसीमा खत्म होने के 30 दिन बाद, कंसोल और आपके टेस्टर के टेस्ट डिवाइस पर बिल्ड की सूची, दोनों में समयसीमा खत्म होने की सूचना दिखती है.

जिन टेस्टर को ऐप्लिकेशन की जांच करने का न्योता नहीं मिला है उन्हें ऐप्लिकेशन को टेस्ट करने के न्योते मिलते हैं. साथ ही, मौजूदा टेस्टर को इस बारे में ईमेल सूचनाएं मिलती हैं कि नया बिल्ड टेस्ट किया जा सकता है. टेस्टर ऐप्लिकेशन को इंस्टॉल करने के निर्देशों के लिए, टेस्टर सेट अप गाइड पढ़ें. आप हर टेस्टर की स्थिति पर नज़र रख सकते हैं. यह भी देखा जा सकता है कि उन्होंने न्योता स्वीकार किया है या नहीं और क्या उन्होंने Firebase कंसोल में ऐप्लिकेशन डाउनलोड किया है.

टेस्टर को 30 दिनों के अंदर, ऐप्लिकेशन की जांच करने का न्योता स्वीकार करना होगा. इसके बाद, ऐप्लिकेशन की समयसीमा खत्म हो जाएगी. जब किसी न्योते की समयसीमा खत्म होने के पांच दिन होते हैं, तो रिलीज़ के टेस्टर के बगल में Firebase कंसोल में, न्योते की समयसीमा खत्म होने की सूचना दिखती है. टेस्टर की लाइन पर मौजूद ड्रॉप-डाउन मेन्यू का इस्तेमाल करके, न्योते को फिर से भेजकर, उसे रिन्यू किया जा सकता है.

अगले चरण