Gradle ব্যবহার করে টেস্টারদের কাছে Android অ্যাপ ডিস্ট্রিবিউট করা


App Distribution Gradle প্লাগ-ইন ব্যবহার করে আপনার Android বিল্ড প্রসেসে App Distribution ইন্টিগ্রেট করতে পারবেন। প্লাগ-ইন আপনাকে অ্যাপের Gradle ফাইলে পরীক্ষক এবং রিলিজ নোট নির্দিষ্ট করতে দেয়, যার ফলে আপনি অ্যাপের বিভিন্ন বিল্ড টাইপ এবং ভ্যারিয়েন্টের জন্য ডিস্ট্রিবিউশন কনফিগার করতে পারেন।

এই নির্দেশিকা থেকে জানতে পারবেন যে কীভাবে App Distribution Gradle প্লাগ-ইন ব্যবহার করে টেস্টারদের APK ডিস্ট্রিবিউট করতে হয়।

শুরু করার আগে

  1. এখনও যোগ না করে থাকলে, আপনার 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 CLI থেকে ক্রেডেনশিয়াল খোঁজে।

ধাপ ৩. আপনার ডিস্ট্রিবিউশন প্রপার্টি কনফিগার করুন

আপনার মডিউল (অ্যাপ-লেভেল) 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"

অথবা, আপনি সেমিকোলন দ্বারা আলাদা করা ডিভাইসের স্পেসিফিকেশনের তালিকা সহ ফাইলের পাথ উল্লেখ করতে পারেন:

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 ফাইল) ডাউনলোড এবং ইনস্টল করে। এক ঘণ্টা পরে লিঙ্কের মেয়াদ শেষ হয়ে যায়।

আপনার বিল্ড ডিস্ট্রিবিউট করার পরে, এটি Firebase কনসোলের App Distribution ড্যাশবোর্ডে ১৫০ দিন (পাঁচ মাস) পর্যন্ত উপলভ্য থাকে। বিল্ডের মেয়াদ শেষ হতে ৩০ দিন বাকি থাকলে, কনসোল এবং টেস্টারের ডিভাইসে বিল্ডের তালিকায় মেয়াদ শেষ হওয়ার বিজ্ঞপ্তি দেখানো হয়।

যেসব টেস্টারকে অ্যাপ টেস্ট করার জন্য আমন্ত্রণ জানানো হয়নি, তাদের শুরু করার জন্য ইমেল আমন্ত্রণ পাঠানো হয় এবং বর্তমান টেস্টারদের ইমেল বিজ্ঞপ্তি পাঠানো হয় যে টেস্ট করার জন্য নতুন বিল্ড রেডি আছে (টেস্ট অ্যাপ কীভাবে ইনস্টল করতে হবে সেই সংক্রান্ত নির্দেশাবলীর জন্য টেস্টার সেট-আপ করার নির্দেশিকা পড়ুন)। আপনি Firebase কনসোলে প্রতিটি পরীক্ষকের স্ট্যাটাস মনিটর করতে পারবেন-তারা আমন্ত্রণ গ্রহণ করেছেন কিনা এবং তারা অ্যাপটি ডাউনলোড করেছেন কিনা।

অ্যাপ পরীক্ষা করার জন্য আমন্ত্রণ গ্রহণ করতে পরীক্ষকদের কাছে ৩০ দিন সময় থাকে, তারপরে এটির মেয়াদ শেষ হয়ে যায়। আমন্ত্রণের মেয়াদ শেষ হতে ৫ দিন বাকি থাকলে, রিলিজের সময় পরীক্ষকের পাশে Firebase কনসোলে মেয়াদ শেষ হওয়ার বিজ্ঞপ্তি দেখানো হয়। টেস্টার সারিতে ড্রপ-ডাউন মেনু ব্যবহার করে আমন্ত্রণ আবার পাঠিয়ে সেটি রিনিউ করা যেতে পারে।

পরবর্তী ধাপ