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


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

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

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

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

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

  2. Firebase कंसोल का App Distribution पेज खोलें. प्रॉम्प्ट मिलने पर, अपना 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.5.0" apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id("com.google.firebase.appdistribution") version "5.3.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.5.0' apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id 'com.google.firebase.appdistribution' version '5.3.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 = "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"

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

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

ऐप्लिकेशन टेस्टिंग एजेंट की मदद से टेस्ट करने के दौरान, अपने-आप लॉगिन होने के लिए उपयोगकर्ता नाम.

testPassword या testPasswordFile

ऐप्लिकेशन टेस्टिंग एजेंट की मदद से टेस्ट करने के दौरान, अपने-आप लॉगिन होने की सुविधा के लिए इस्तेमाल किया जाने वाला पासवर्ड.

इसके अलावा, पासवर्ड वाली सादे टेक्स्ट की फ़ाइल का पाथ भी दिया जा सकता है:

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

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

testPasswordResource

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

testNonBlocking

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

resultsBucket

Google Cloud Storage (GCS) की कस्टम बकेट, जहां टेस्ट के नतीजे सेव किए जाते हैं. इसे खाली छोड़ने पर, डिफ़ॉल्ट बकेट का इस्तेमाल किया जाता है. बकेट का मालिकाना हक, बिलिंग की सुविधा वाले प्रोजेक्ट के पास होना चाहिए. साथ ही, बकेट तय करने पर, इस्तेमाल किए गए स्टोरेज के लिए बिलिंग शुल्क लागू होते हैं.

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

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

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

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

अगले चरण