Catch up on highlights from Firebase at Google I/O 2023. Learn more

ग्रैडल का उपयोग करके परीक्षकों को Android ऐप्स वितरित करें

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

यह मार्गदर्शिका बताती है कि ऐप डिस्ट्रीब्यूशन ग्रैडल प्लगइन का उपयोग करके परीक्षकों को एपीके कैसे वितरित करें।

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

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

यदि आप किसी अन्य फायरबेस उत्पाद का उपयोग नहीं कर रहे हैं, तो आपको केवल एक प्रोजेक्ट बनाना होगा और अपना ऐप पंजीकृत करना होगा। हालांकि, यदि आप भविष्य में अतिरिक्त उत्पादों का उपयोग करने का निर्णय लेते हैं, तो उपरोक्त लिंक किए गए पृष्ठ पर सभी चरणों को पूरा करना सुनिश्चित करें।

चरण 1. अपना Android प्रोजेक्ट सेट करें

  1. अपने रूट-लेवल (प्रोजेक्ट-लेवल) ग्रैडल फ़ाइल ( <project>/build.gradle या <project>/build.gradle.kts ) में, ऐप डिस्ट्रीब्यूशन ग्रैडल प्लगइन को बिल्डस्क्रिप्ट डिपेंडेंसी के रूप में जोड़ें:

    ग्रूवी

    buildscript {
      repositories {
        // Make sure that you have the following two repositories
        google()  // Google's Maven repository
        mavenCentral()  // Maven Central repository
      }
    
      dependencies {
          ...
          classpath 'com.android.tools.build:gradle:7.2.0'
    
          // Make sure that you have the Google services Gradle plugin dependency
          classpath 'com.google.gms:google-services:4.3.15'
    
          // Add the dependency for the App Distribution Gradle plugin
          classpath 'com.google.firebase:firebase-appdistribution-gradle:4.0.0'
      }
    }
    

    Kotlin

    buildscript {
      repositories {
        // Make sure that you have the following two repositories
        google()  // Google's Maven repository
        mavenCentral()  // Maven Central repository
      }
    
      dependencies {
          ...
          classpath("com.android.tools.build:gradle:7.2.0")
    
          // Make sure that you have the Google services Gradle plugin dependency
          classpath("com.google.gms:google-services:4.3.15")
    
          // Add the dependency for the App Distribution Gradle plugin
          classpath("com.google.firebase:firebase-appdistribution-gradle:4.0.0")
      }
    }
    
  2. अपने मॉड्यूल (ऐप-लेवल) ग्रैडल फ़ाइल में (आमतौर पर <project>/<app-module>/build.gradle या <project>/<app-module>/build.gradle.kts ), ऐप डिस्ट्रीब्यूशन ग्रेडल प्लगइन जोड़ें:

    ग्रूवी

    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'
    }
    

    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")
    }
    
  3. यदि आप कॉर्पोरेट प्रॉक्सी या फ़ायरवॉल के पीछे हैं, तो निम्नलिखित जावा सिस्टम गुण जोड़ें जो आपके वितरण को फायरबेस पर अपलोड करने के लिए ऐप वितरण को सक्षम करता है:

    -Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password
    

चरण 2. फायरबेस के साथ प्रमाणित करें

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

चरण 3. अपने वितरण गुणों को कॉन्फ़िगर करें

आपके मॉड्यूल (ऐप-लेवल) ग्रेडल फ़ाइल (आमतौर पर <project>/<app-module>/build.gradle या <project>/<app-module>/build.gradle.kts ) में, कम से कम जोड़कर ऐप डिस्ट्रीब्यूशन को कॉन्फ़िगर करें एक firebaseAppDistribution अनुभाग।

उदाहरण के लिए, release बिल्ड को परीक्षकों को वितरित करने के लिए, इन निर्देशों का पालन करें ::

ग्रूवी

android {

  // ...

  buildTypes {
      release {
          firebaseAppDistribution {
              artifactType="APK"
              releaseNotesFile="/path/to/releasenotes.txt"
              testers="ali@example.com, bri@example.com, cal@example.com"
          }
      }
  }

  // ...
}

Kotlin

import com.google.firebase.appdistribution.gradle.firebaseAppDistribution

android {

  // ...

  buildTypes {
      release {
          firebaseAppDistribution {
              artifactType = "APK"
              releaseNotesFile = "/path/to/releasenotes.txt"
              testers = "ali@example.com, bri@example.com, cal@example.com"
          }
      }
  }

  // ...
}

आप बिल्ड प्रकार और उत्पाद स्वादों के लिए ऐप वितरण को कॉन्फ़िगर कर सकते हैं।

उदाहरण के लिए, "डेमो" और "पूर्ण" उत्पाद स्वादों में debug और release बिल्ड वितरित करने के लिए, इन निर्देशों का पालन करें:

ग्रूवी

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"
          }
      }
  }

  // ...
}

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"
          }
      }
  }

  // ...
}

वितरण को कॉन्फ़िगर करने के लिए निम्न पैरामीटर का उपयोग करें:

ऐप वितरण बिल्ड पैरामीटर
appId

आपके ऐप की फायरबेस ऐप आईडी। केवल तभी आवश्यक है जब आपके पास Google सेवाएं ग्रेडल प्लगइन स्थापित न हो। आप ऐप आईडी को google-services.json फ़ाइल में या सामान्य सेटिंग्स पेज पर फायरबेस कंसोल में पा सकते हैं। आपकी build.gradle फ़ाइल का मान google-services प्लग-इन के मान आउटपुट को ओवरराइड कर देता है।

appId="1:1234567890:android:321abc456def7890"
serviceCredentialsFile

आपके सेवा खाते की निजी कुंजी JSON फ़ाइल का पथ। यदि आप सेवा खाता प्रमाणीकरण का उपयोग करते हैं तो ही आवश्यक है।

artifactType

आपके ऐप के फ़ाइल प्रकार को निर्दिष्ट करता है। "AAB" या "APK" पर सेट किया जा सकता है।

artifactPath

आप जिस एपीके या एएबी फ़ाइल को अपलोड करना चाहते हैं, उसका निरपेक्ष पथ।

releaseNotes या releaseNotesFile

इस बिल्ड के लिए रिलीज़ नोट।

आप या तो सीधे रिलीज़ नोट निर्दिष्ट कर सकते हैं या सादे पाठ फ़ाइल का पथ निर्दिष्ट कर सकते हैं।

testers या testersFile

उन परीक्षकों के ईमेल पते जिन्हें आप बिल्ड वितरित करना चाहते हैं।

आप परीक्षकों को ईमेल पतों की अल्पविराम से अलग की गई सूची के रूप में निर्दिष्ट कर सकते हैं:

testers="ali@example.com, bri@example.com, cal@example.com"

या, आप ईमेल पतों की अल्पविराम से अलग की गई सूची वाली फ़ाइल का पथ निर्दिष्ट कर सकते हैं:

testersFile="/path/to/testers.txt"
groups या groupsFile

वे परीक्षक समूह जिन्हें आप बिल्ड वितरित करना चाहते हैं (देखें परीक्षकों को प्रबंधित करें )। समूहों का उपयोग करके निर्दिष्ट किया गया है समूह उपनाम , जिसे आप फायरबेस ऐप डिस्ट्रीब्यूशन कंसोल में टेस्टर्स टैब में पा सकते हैं।

आप समूहों को समूह उपनामों की अल्पविराम से अलग सूची के रूप में निर्दिष्ट कर सकते हैं:

groups="qa-team, android-testers"

या, आप समूह उपनामों की अल्पविराम से अलग की गई फ़ाइल वाली फ़ाइल का पथ निर्दिष्ट कर सकते हैं:

groupsFile="/path/to/tester-groups.txt"
stacktrace

उपयोगकर्ता अपवादों के लिए स्टैकट्रेस प्रिंट करता है। डिबगिंग मुद्दों के दौरान यह सहायक होता है।

चरण 4. अपने ऐप को परीक्षकों को वितरित करें

  1. अंत में, अपने परीक्षण ऐप को पैकेज करने और परीक्षकों को आमंत्रित करने के लिए, लक्ष्य बनाएं BUILD-VARIANT और appDistributionUpload BUILD-VARIANT अपने प्रोजेक्ट के ग्रैडल रैपर के साथ, जहां BUILD-VARIANT वैकल्पिक उत्पाद फ्लेवर और बिल्ड प्रकार है जिसे आपने पिछले चरण में कॉन्फ़िगर किया था। उत्पाद स्वादों के बारे में अधिक जानकारी के लिए, बिल्ड वेरिएंट कॉन्फ़िगर करें देखें।

    उदाहरण के लिए, release बिल्ड संस्करण का उपयोग करके अपने ऐप को वितरित करने के लिए, निम्नलिखित कमांड चलाएँ:

    ./gradlew assembleRelease appDistributionUploadRelease
    

    या, यदि आपने अपने Google खाते से प्रमाणित किया है और अपनी ग्रेडल बिल्ड फ़ाइल में प्रमाणिकता प्रदान नहीं की है, तो 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 फ़ाइल में सेट मूल्यों को ओवरराइड भी कर सकते हैं। उदाहरण के लिए:

    • डिबग बिल्ड को ऐप वितरण में अपलोड करने के लिए:

      ./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 प्रोजेक्ट में परीक्षक जोड़ दिए जाने के बाद, आप उन्हें अलग-अलग रिलीज़ में जोड़ सकते हैं। जिन परीक्षकों को हटा दिया गया है, उनके पास अब आपके प्रोजेक्ट में रिलीज़ तक पहुंच नहीं होगी, लेकिन फिर भी कुछ समय के लिए आपकी रिलीज़ तक पहुंच बनाए रख सकते हैं।

    आप परीक्षकों को --file="/path/to/testers.txt" के बजाय --emails उपयोग करके भी निर्दिष्ट कर सकते हैं।

    appDistributionAddTesters और appDistributionRemoveTesters कार्य भी निम्नलिखित तर्कों को स्वीकार करते हैं:

    • projectNumber : आपका फायरबेस प्रोजेक्ट नंबर।

    • serviceCredentialsFile : आपकी Google सेवा क्रेडेंशियल फ़ाइल का पथ। यह वही तर्क है जिसका उपयोग अपलोड क्रिया द्वारा किया जाता है।

रिलीज अपलोड के बाद ग्रेडल प्लगइन निम्नलिखित लिंक को आउटपुट करता है। ये लिंक आपको बायनेरिज़ प्रबंधित करने में मदद करते हैं और यह सुनिश्चित करते हैं कि परीक्षकों और अन्य डेवलपर्स के पास सही रिलीज़ है:

  • firebase_console_uri - एकल रिलीज़ प्रदर्शित करने वाले Firebase कंसोल का लिंक। आप इस लिंक को अपने संगठन में अन्य डेवलपर्स के साथ साझा कर सकते हैं।
  • testing_uri - टेस्टर अनुभव (एंड्रॉइड नेटिव ऐप) में रिलीज़ का एक लिंक जो परीक्षकों को रिलीज़ नोट्स देखने और ऐप को अपने डिवाइस पर इंस्टॉल करने देता है। लिंक का उपयोग करने के लिए परीक्षक को रिलीज़ तक पहुंच की आवश्यकता होती है।
  • binary_download_uri - एक हस्ताक्षरित लिंक जो सीधे ऐप बाइनरी (एपीके या एएबी फाइल) को डाउनलोड और इंस्टॉल करता है। लिंक एक घंटे के बाद समाप्त हो जाता है।

एक बार जब आप अपना बिल्ड वितरित कर देते हैं, तो यह 150 दिनों (पांच महीने) के लिए फायरबेस कंसोल के ऐप डिस्ट्रीब्यूशन डैशबोर्ड में उपलब्ध हो जाता है। जब बिल्ड समाप्त होने के 30 दिन बाद होता है, तो कंसोल और आपके परीक्षक की टेस्ट डिवाइस पर बिल्ड की सूची दोनों में एक समाप्ति सूचना दिखाई देती है।

जिन परीक्षकों को ऐप का परीक्षण करने के लिए आमंत्रित नहीं किया गया है, उन्हें आरंभ करने के लिए ईमेल आमंत्रण प्राप्त होते हैं, और मौजूदा परीक्षकों को ईमेल सूचनाएँ प्राप्त होती हैं कि एक नया बिल्ड परीक्षण के लिए तैयार है (परीक्षण ऐप को कैसे स्थापित करें, इसके निर्देशों के लिए परीक्षक सेट अप मार्गदर्शिका पढ़ें)। आप फायरबेस कंसोल में प्रत्येक परीक्षक की स्थिति की निगरानी कर सकते हैं-चाहे उन्होंने आमंत्रण स्वीकार किया हो और क्या उन्होंने ऐप डाउनलोड किया हो।

परीक्षकों के पास ऐप की समय सीमा समाप्त होने से पहले उसका परीक्षण करने का आमंत्रण स्वीकार करने के लिए 30 दिन होते हैं। जब आमंत्रण समाप्त होने के 5 दिन बाद होता है, तो एक रिलीज पर परीक्षक के बगल में फायरबेस कंसोल में एक समाप्ति सूचना दिखाई देती है। परीक्षक पंक्ति पर ड्रॉप-डाउन मेनू का उपयोग करके आमंत्रण को फिर से भेजकर इसे नवीनीकृत किया जा सकता है।

अगले कदम