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


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

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

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

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

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

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

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

अगले चरण