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


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

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

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

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

अगर आपको 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.3" apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id("com.google.firebase.appdistribution") version "5.1.1" 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.3' apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id 'com.google.firebase.appdistribution' version '5.1.1' 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 = "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 बिल्ड को "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 assembleRelease appDistributionUploadRelease
    

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

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

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

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

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

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

अगले चरण