Gradle ব্যবহার করে পরীক্ষকদের কাছে Android অ্যাপ বিতরণ করুন


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

এই নির্দেশিকায় App Distribution গ্র্যাডল প্লাগইন ব্যবহার করে পরীক্ষকদের কাছে APK বিতরণ করার পদ্ধতি বর্ণনা করা হয়েছে।

শুরু করার আগে

যদি আগে থেকে না করে থাকেন, তাহলে আপনার অ্যান্ড্রয়েড প্রজেক্টে ফায়ারবেস যোগ করুন

আপনি যদি অন্য কোনো Firebase প্রোডাক্ট ব্যবহার না করেন, তাহলে আপনাকে শুধু একটি প্রজেক্ট তৈরি করে আপনার অ্যাপটি রেজিস্টার করতে হবে। তবে, ভবিষ্যতে যদি আপনি অতিরিক্ত প্রোডাক্ট ব্যবহার করার সিদ্ধান্ত নেন, তাহলে উপরে লিঙ্ক দেওয়া পৃষ্ঠার সমস্ত ধাপ অবশ্যই সম্পন্ন করবেন।

ধাপ ১. আপনার অ্যান্ড্রয়েড প্রজেক্ট সেট আপ করুন।

  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.4" apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id("com.google.firebase.appdistribution") version "5.2.1" 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.4' apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id 'com.google.firebase.appdistribution' version '5.2.1' 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. আপনি যদি কোনো কর্পোরেট প্রক্সি বা ফায়ারওয়ালের পিছনে থাকেন, তাহলে নিম্নলিখিত জাভা সিস্টেম প্রপার্টিটি যোগ করুন যা App Distribution আপনার ডিস্ট্রিবিউশনগুলি ফায়ারবেসে আপলোড করতে সক্ষম করে:

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

ধাপ ২. ফায়ারবেস দিয়ে প্রমাণীকরণ করুন।

গ্রেডল প্লাগইন ব্যবহার করার আগে, আপনাকে অবশ্যই নিম্নলিখিত উপায়গুলির মধ্যে একটি ব্যবহার করে আপনার ফায়ারবেস প্রজেক্টের সাথে প্রমাণীকরণ করতে হবে। ডিফল্টরূপে, অন্য কোনো প্রমাণীকরণ পদ্ধতি ব্যবহার না করা হলে গ্রেডল প্লাগইন Firebase সিএলআই (CLI) থেকে ক্রেডেনশিয়াল খুঁজে নেয়।

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

আপনার মডিউল (অ্যাপ-লেভেল) গ্রেডল ফাইলে (সাধারণত <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

আপনার অ্যাপের ফায়ারবেস অ্যাপ আইডি। শুধুমাত্র তখনই এটির প্রয়োজন হবে, যদি আপনার গুগল সার্ভিসেস গ্রেডল প্লাগইন ইনস্টল করা না থাকে। আপনি অ্যাপ আইডিটি google-services.json ফাইলে অথবা Firebase কনসোলের জেনারেল সেটিংস পৃষ্ঠায় খুঁজে পেতে পারেন। আপনার build.gradle ফাইলের মানটি google-services প্লাগইন থেকে প্রাপ্ত মানকে ওভাররাইড করে।

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

আপনার সার্ভিস অ্যাকাউন্টের প্রাইভেট কী JSON ফাইলের পাথ। শুধুমাত্র সার্ভিস অ্যাকাউন্ট অথেন্টিকেশন ব্যবহার করলে এটি প্রয়োজন।

artifactType

আপনার অ্যাপের ফাইলের ধরন নির্দিষ্ট করে। এটি "AAB" বা "APK" হিসেবে সেট করা যেতে পারে।

artifactPath

আপনি যে APK বা AAB ফাইলটি আপলোড করতে চান, তার সঠিক পাথ (Absolute Path) দিন।

releaseNotes বা releaseNotesFile

এই বিল্ডের রিলিজ নোট।

আপনি সরাসরি রিলিজ নোট অথবা একটি প্লেইন টেক্সট ফাইলের পাথ উল্লেখ করতে পারেন।

testers বা testersFile

যেসব পরীক্ষকের কাছে আপনি বিল্ড বিতরণ করতে চান, তাদের ইমেল ঠিকানা।

আপনি পরীক্ষকদেরকে কমা দিয়ে আলাদা করা ইমেল ঠিকানার তালিকা হিসেবে নির্দিষ্ট করতে পারেন:

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

অথবা, আপনি কমা দিয়ে আলাদা করা ইমেল ঠিকানার তালিকা সম্বলিত কোনো ফাইলের পাথ নির্দিষ্ট করে দিতে পারেন:

testersFile="/path/to/testers.txt"
groups বা groupsFile

যে পরীক্ষক গোষ্ঠীগুলির মধ্যে আপনি বিল্ডগুলি বিতরণ করতে চান (দেখুন পরীক্ষক পরিচালনা )। গোষ্ঠীগুলি নির্দিষ্ট করা হয় নিম্নলিখিত উপায়ে: গ্রুপ উপনাম যা আপনি Firebase App Distribution কনসোলের Testers ট্যাবে খুঁজে পাবেন।

আপনি গ্রুপগুলোকে তাদের উপনামের কমা-দ্বারা-বিভক্ত তালিকা হিসেবে নির্দিষ্ট করতে পারেন:

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

স্বয়ংক্রিয় পরীক্ষাগুলো অ্যাসিঙ্ক্রোনাসভাবে চালান। স্বয়ংক্রিয় পরীক্ষার ফলাফল জানতে ফায়ারবেস কনসোল দেখুন।

stacktrace

ইউজার এক্সেপশনের স্ট্যাকট্রেস প্রিন্ট করে। সমস্যা ডিবাগ করার সময় এটি সহায়ক।

ধাপ ৪। আপনার অ্যাপটি পরীক্ষকদের মধ্যে বিতরণ করুন।

  1. অবশেষে, আপনার টেস্ট অ্যাপটি প্যাকেজ করতে এবং পরীক্ষকদের আমন্ত্রণ জানাতে, টার্গেটগুলো বিল্ড করুন। BUILD-VARIANT এবং appDistributionUpload BUILD-VARIANT আপনার প্রোজেক্টের Gradle র‍্যাপার ব্যবহার করুন, যেখানে 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"

      আপনার ফায়ারবেস প্রজেক্টে একবার কোনো পরীক্ষককে যুক্ত করা হলে, আপনি তাদেরকে স্বতন্ত্র রিলিজগুলোতে অন্তর্ভুক্ত করতে পারবেন। যে পরীক্ষকদের সরিয়ে দেওয়া হবে, তারা আপনার প্রজেক্টের রিলিজগুলোতে আর অ্যাক্সেস পাবেন না, তবে একটি নির্দিষ্ট সময়ের জন্য তাদের অ্যাক্সেস বজায় থাকতে পারে।

    আপনি --emails এর পরিবর্তে --file="/path/to/testers.txt" ব্যবহার করেও পরীক্ষকদের নির্দিষ্ট করতে পারেন।

    appDistributionAddTesters এবং appDistributionRemoveTesters টাস্কগুলো নিম্নলিখিত আর্গুমেন্টগুলোও গ্রহণ করে:

    • projectNumber : আপনার ফায়ারবেস প্রজেক্ট নম্বর।

    • serviceCredentialsFile : আপনার গুগল পরিষেবা ক্রেডেনশিয়াল ফাইলের পাথ। আপলোড অ্যাকশনে ব্যবহৃত আর্গুমেন্টটিই এটি।

রিলিজ আপলোড করার পর গ্রেডল প্লাগইনটি নিম্নলিখিত লিঙ্কগুলি আউটপুট করে। এই লিঙ্কগুলি আপনাকে বাইনারিগুলি পরিচালনা করতে এবং পরীক্ষক ও অন্যান্য ডেভেলপারদের কাছে সঠিক রিলিজটি পৌঁছেছে কিনা তা নিশ্চিত করতে সাহায্য করে:

  • firebase_console_uri - Firebase কনসোলের একটি লিঙ্ক, যেখানে একটিমাত্র রিলিজ প্রদর্শিত হয়। আপনি আপনার প্রতিষ্ঠানের অন্যান্য ডেভেলপারদের সাথে এই লিঙ্কটি শেয়ার করতে পারেন।
  • testing_uri - টেস্টার এক্সপেরিয়েন্সে (অ্যান্ড্রয়েড নেটিভ অ্যাপ) থাকা রিলিজের একটি লিঙ্ক, যা টেস্টারদের রিলিজ নোট দেখতে এবং তাদের ডিভাইসে অ্যাপটি ইনস্টল করতে দেয়। লিঙ্কটি ব্যবহার করার জন্য টেস্টারের রিলিজটিতে অ্যাক্সেস থাকা প্রয়োজন।
  • binary_download_uri - একটি স্বাক্ষরিত লিঙ্ক যা সরাসরি অ্যাপের বাইনারি (APK বা AAB ফাইল) ডাউনলোড এবং ইনস্টল করে। লিঙ্কটি এক ঘণ্টা পর মেয়াদোত্তীর্ণ হয়ে যায়।

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

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

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

পরবর্তী পদক্ষেপ