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


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

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

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

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

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

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

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

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

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

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

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

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

शुरू करने से पहले

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

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

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

    • 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 इंटिग्रेशन चालू करने के लिए, स्क्रीन पर दिए गए निर्देशों का पालन करें. साथ ही, चुनें कि कौनसे Firebase Android ऐप्लिकेशन को Google Play से लिंक करना है.

    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.4" apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id("com.google.firebase.appdistribution") version "5.2.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.4' apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id 'com.google.firebase.appdistribution' version '5.2.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 CLI से क्रेडेंशियल ढूंढता है. ऐसा तब होता है, जब पुष्टि करने के लिए किसी अन्य तरीके का इस्तेमाल नहीं किया जाता.

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

अपनी मॉड्यूल (ऐप्लिकेशन-लेवल) 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 बिल्ड को "demo" और "full" प्रॉडक्ट फ़्लेवर में डिस्ट्रिब्यूट करने के लिए, इन निर्देशों का पालन करें:

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 या AAB फ़ाइल का ऐब्सलूट पाथ.

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. build.gradle फ़ाइल में सेट की गई वैल्यू को भी बदला जा सकता है. इसके लिए, --<property-name>=<property-value> के तौर पर कमांड लाइन आर्ग्युमेंट पास करें. उदाहरण के लिए:

    • 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 या AAB फ़ाइल) सीधे डाउनलोड और इंस्टॉल हो जाती है. लिंक इस्तेमाल करने की समयसीमा एक घंटे में खत्म हो जाएगी.

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

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

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

अगले चरण