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 সিস্টেম প্রপার্টি যোগ করুন যা Firebase-এ আপনার ডিস্ট্রিবিউশন আপলোড করার জন্য App Distribution চালু করে:

    -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. এছাড়াও, আপনি 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 ড্যাশবোর্ডে উপলভ্য থাকে। বিল্ডের মেয়াদ শেষ হওয়ার ৩০ দিন আগে, কনসোল এবং আপনার পরীক্ষকের টেস্ট ডিভাইসে বিল্ডের তালিকায় মেয়াদ শেষ হওয়ার বিজ্ঞপ্তি দেখানো হয়।

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

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

পরবর্তী ধাপ