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


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

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

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

  • टेस्टर के डिवाइसों के हिसाब से ऑप्टिमाइज़ किए गए APKs (Google Play से उपलब्ध कराए गए) चलाएं.

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

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

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

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

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

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

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

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

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

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

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

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 कंसोल में रिलीज़ के बगल में, समयसीमा खत्म होने की सूचना दिखती है. टेस्टर की लाइन में मौजूद ड्रॉप-डाउन मेन्यू का इस्तेमाल करके, न्योता फिर से भेजकर उसे रिन्यू किया जा सकता है.

अगले चरण