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

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

इस गाइड में ऐप्लिकेशन डिस्ट्रिब्यूशन Gradle प्लग इन का इस्तेमाल करके, जांच करने वाले लोगों को APK डिस्ट्रिब्यूट करने का तरीका बताया गया है.

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

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

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

पहला चरण. अपना 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 = "APK"
              releaseNotesFile = "/path/to/releasenotes.txt"
              testers = "ali@example.com, bri@example.com, cal@example.com"
          }
      }
  }

  // ...
}

Groovy

android {

  // ...

  buildTypes {
      release {
          firebaseAppDistribution {
              artifactType="APK"
              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 assembleRelease appDistributionUploadRelease
    

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

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

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

      ./gradlew bundleDebug appDistributionUploadDebug
          --artifactType="APK"
      
    • अतिरिक्त टेस्टर को न्योता देने या अपने 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 कंसोल में, न्योते की समयसीमा खत्म होने की सूचना दिखती है. टेस्टर की लाइन पर मौजूद ड्रॉप-डाउन मेन्यू का इस्तेमाल करके, न्योते को फिर से भेजकर, उसे रिन्यू किया जा सकता है.

अगले चरण