আপনি App Distribution গ্রেডল প্লাগইন ব্যবহার করে আপনার অ্যান্ড্রয়েড বিল্ড প্রক্রিয়ায় App Distribution একীভূত করতে পারেন। এই প্লাগইনটি আপনাকে আপনার অ্যাপের গ্রেডল ফাইলে টেস্টার এবং রিলিজ নোট নির্দিষ্ট করার সুযোগ দেয়, যার ফলে আপনি আপনার অ্যাপের বিভিন্ন বিল্ড টাইপ এবং ভ্যারিয়েন্টের জন্য ডিস্ট্রিবিউশন কনফিগার করতে পারেন।
এই নির্দেশিকায় App Distribution গ্র্যাডল প্লাগইন ব্যবহার করে পরীক্ষকদের কাছে APK বিতরণ করার পদ্ধতি বর্ণনা করা হয়েছে।
শুরু করার আগে
যদি আগে থেকে না করে থাকেন, তাহলে আপনার অ্যান্ড্রয়েড প্রজেক্টে ফায়ারবেস যোগ করুন ।
আপনি যদি অন্য কোনো Firebase প্রোডাক্ট ব্যবহার না করেন, তাহলে আপনাকে শুধু একটি প্রজেক্ট তৈরি করে আপনার অ্যাপটি রেজিস্টার করতে হবে। তবে, ভবিষ্যতে যদি আপনি অতিরিক্ত প্রোডাক্ট ব্যবহার করার সিদ্ধান্ত নেন, তাহলে উপরে লিঙ্ক দেওয়া পৃষ্ঠার সমস্ত ধাপ অবশ্যই সম্পন্ন করবেন।
ধাপ ১. আপনার অ্যান্ড্রয়েড প্রজেক্ট সেট আপ করুন।
আপনার রুট-লেভেলের (প্রজেক্ট-লেভেলের) 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 }
In your module (app-level) Gradle file (usually
<project>/<app-module>/build.gradle.ktsor<project>/<app-module>/build.gradle), add the App Distribution Gradle plugin: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' }
আপনি যদি কোনো কর্পোরেট প্রক্সি বা ফায়ারওয়ালের পিছনে থাকেন, তাহলে নিম্নলিখিত জাভা সিস্টেম প্রপার্টিটি যোগ করুন যা App Distribution আপনার ডিস্ট্রিবিউশনগুলি ফায়ারবেসে আপলোড করতে সক্ষম করে:
-Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password
ধাপ ২. ফায়ারবেস দিয়ে প্রমাণীকরণ করুন।
গ্রেডল প্লাগইন ব্যবহার করার আগে, আপনাকে অবশ্যই নিম্নলিখিত উপায়গুলির মধ্যে একটি ব্যবহার করে আপনার ফায়ারবেস প্রজেক্টের সাথে প্রমাণীকরণ করতে হবে। ডিফল্টরূপে, অন্য কোনো প্রমাণীকরণ পদ্ধতি ব্যবহার না করা হলে গ্রেডল প্লাগইন Firebase সিএলআই (CLI) থেকে ক্রেডেনশিয়াল খুঁজে নেয়।
একটি সার্ভিস অ্যাকাউন্টের মাধ্যমে প্রমাণীকরণ আপনাকে আপনার কন্টিনিউয়াস ইন্টিগ্রেশন (CI) সিস্টেমের সাথে প্লাগইনটি নমনীয়ভাবে ব্যবহার করার সুযোগ দেয়। সার্ভিস অ্যাকাউন্টের ক্রেডেনশিয়াল প্রদান করার দুটি উপায় রয়েছে:
- আপনার সার্ভিস অ্যাকাউন্ট কী ফাইলটি
build.gradleএ পাস করুন। আপনার বিল্ড এনভায়রনমেন্টে যদি আগে থেকেই সার্ভিস অ্যাকাউন্ট কী ফাইলটি থাকে, তবে এই পদ্ধতিটি আপনার কাছে সুবিধাজনক মনে হতে পারে। - আপনার সার্ভিস অ্যাকাউন্ট কী ফাইলের দিকে নির্দেশ করার জন্য
GOOGLE_APPLICATION_CREDENTIALSএনভায়রনমেন্ট ভেরিয়েবলটি সেট করুন। যদি আপনার অন্য কোনো গুগল পরিষেবার (যেমন, Google Cloud ) জন্য আগে থেকেই অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়ালস (ADC) কনফিগার করা থাকে, তাহলে আপনি এই পদ্ধতিটি পছন্দ করতে পারেন।
সার্ভিস অ্যাকাউন্টের ক্রেডেনশিয়াল ব্যবহার করে প্রমাণীকরণ করতে:
- Google Cloud কনসোলে, আপনার প্রজেক্টটি নির্বাচন করুন এবং একটি নতুন সার্ভিস অ্যাকাউন্ট তৈরি করুন।
- Firebase App Distribution Admin রোলটি যুক্ত করুন।
- একটি প্রাইভেট json কী তৈরি করুন এবং কী-টি আপনার বিল্ড এনভায়রনমেন্টের নাগালের মধ্যে থাকা কোনো স্থানে সরিয়ে নিন। এই ফাইলটি অবশ্যই নিরাপদ কোনো জায়গায় রাখবেন , কারণ এটি আপনার Firebase প্রোজেক্টের App Distribution অ্যাডমিনিস্ট্রেটর অ্যাক্সেস প্রদান করে।
- আপনি যদি ২০ সেপ্টেম্বর, ২০১৯-এর পরে আপনার অ্যাপ তৈরি করে থাকেন, তাহলে এই ধাপটি এড়িয়ে যান: Google APIs কনসোলে, Firebase App Distribution API সক্রিয় করুন। অনুরোধ করা হলে, আপনার Firebase প্রজেক্টের নামের সাথে একই নামের প্রজেক্টটি নির্বাচন করুন।
আপনার পরিষেবা অ্যাকাউন্টের পরিচয়পত্র প্রদান করুন বা খুঁজে বের করুন:
- To pass Gradle your service account key, in your
build.gradlefile, set the propertyserviceCredentialsFileto the private key JSON file. ADC-তে আপনার ক্রেডেনশিয়াল খুঁজে পেতে,
GOOGLE_APPLICATION_CREDENTIALSএনভায়রনমেন্ট ভেরিয়েবলটিকে প্রাইভেট কী JSON ফাইলের পাথে সেট করুন। উদাহরণস্বরূপ:export GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/credentials/file.json
ADC-এর সাথে প্রমাণীকরণ সম্পর্কে আরও তথ্যের জন্য, 'আপনার অ্যাপ্লিকেশনে ক্রেডেনশিয়াল প্রদান' পড়ুন।
- To pass Gradle your service account key, in your
আপনার প্রজেক্ট প্রমাণীকরণের নির্দেশাবলীর জন্য Firebase CLI দিয়ে লগ ইন করুন” দেখুন।
ধাপ ৩. আপনার ডিস্ট্রিবিউশন প্রোপার্টিগুলো কনফিগার করুন।
আপনার মডিউল (অ্যাপ-লেভেল) গ্রেডল ফাইলে (সাধারণত <project>/<app-module>/build.gradle.kts অথবা <project>/<app-module>/build.gradle ), অন্তত একটি firebaseAppDistribution সেকশন যোগ করে App Distribution কনফিগার করুন।
For example, to distribute the release build to testers, follow these instructions::
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" } } } // ... }
You can configure App Distribution for build types and product flavors .
For example, to distribute debug and release builds in "demo" and "full" product flavors, follow these instructions:
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" } } } // ... }
Use the following parameters to configure the distribution:
| App Distribution বিল্ড প্যারামিটার | |
|---|---|
appId | আপনার অ্যাপের ফায়ারবেস অ্যাপ আইডি। শুধুমাত্র তখনই এটির প্রয়োজন হবে, যদি আপনার গুগল সার্ভিসেস গ্রেডল প্লাগইন ইনস্টল করা না থাকে। আপনি অ্যাপ আইডিটি appId="1:1234567890:android:321abc456def7890" |
serviceCredentialsFile | আপনার সার্ভিস অ্যাকাউন্টের প্রাইভেট কী JSON ফাইলের পাথ। শুধুমাত্র সার্ভিস অ্যাকাউন্ট অথেন্টিকেশন ব্যবহার করলে এটি প্রয়োজন। |
artifactType | Specifies your app's file type. Can be set to |
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 | যে পরীক্ষক গোষ্ঠীগুলির মধ্যে আপনি বিল্ডগুলি বিতরণ করতে চান (দেখুন পরীক্ষক পরিচালনা )। গোষ্ঠীগুলি নির্দিষ্ট করা হয় নিম্নলিখিত উপায়ে: আপনি গ্রুপগুলোকে তাদের উপনামের কমা-দ্বারা-বিভক্ত তালিকা হিসেবে নির্দিষ্ট করতে পারেন: 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 | অ্যাপ টেস্টিং এজেন্ট টেস্ট চালানোর সময় যদি এটি সেট করা থাকে, তাহলে কমান্ডটি টেস্টগুলো শুরু করবে এবং সেগুলো সম্পূর্ণ হওয়ার জন্য অপেক্ষা না করে সাথে সাথেই রিটার্ন করবে। টেস্টের ফলাফল দেখতে, ফায়ারবেস কনসোলে যান। যদি এই ফ্ল্যাগটি সেট করা না থাকে, তাহলে টেস্টগুলো সম্পূর্ণ না হওয়া পর্যন্ত কমান্ডটি ব্লক হয়ে থাকবে এবং কোনো টেস্ট ব্যর্থ হলে একটি ফেইলর কোড দিয়ে এক্সিট করবে। |
stacktrace | ইউজার এক্সেপশনের স্ট্যাকট্রেস প্রিন্ট করে। সমস্যা ডিবাগ করার সময় এটি সহায়ক। |
ধাপ ৪। আপনার অ্যাপটি পরীক্ষকদের মধ্যে বিতরণ করুন।
অবশেষে, আপনার টেস্ট অ্যাপটি প্যাকেজ করতে এবং পরীক্ষকদের আমন্ত্রণ জানাতে, টার্গেটগুলো বিল্ড করুন।
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
আপনি
--<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 কনসোলে পরীক্ষকের পাশে একটি মেয়াদ শেষের বিজ্ঞপ্তি দেখা যায়। পরীক্ষকের সারিতে থাকা ড্রপ-ডাউন মেনু ব্যবহার করে আমন্ত্রণটি পুনরায় পাঠিয়ে নবায়ন করা যেতে পারে।
পরবর্তী পদক্ষেপ
পরীক্ষকদের জন্য আপনার অ্যাপ সম্পর্কে মতামত (স্ক্রিনশট সহ) পাঠানো সহজ করতে অ্যাপের মধ্যেই ফিডব্যাক ব্যবস্থা চালু করুন।
আপনার অ্যাপের নতুন বিল্ড ইনস্টল করার জন্য উপলব্ধ হলে, আপনার পরীক্ষকদের কীভাবে অ্যাপের মধ্যেই অ্যালার্ট দেখাবেন তা জেনে নিন।
ধাপে ধাপে অ্যাপ বান্ডেল রিলিজ বিতরণ করার পদ্ধতি জানতে অ্যান্ড্রয়েড অ্যাপ বান্ডেল কোডল্যাব পরিদর্শন করুন।
CI/CD ব্যবহার করে QA টেস্টারদের কাছে অ্যান্ড্রয়েড অ্যাপ বিতরণের সেরা পদ্ধতিগুলো জানুন।