আপনি App Distribution গ্রেডল প্লাগইন ব্যবহার করে আপনার অ্যান্ড্রয়েড বিল্ড প্রক্রিয়ায় App Distribution একীভূত করতে পারেন। প্লাগইনটি আপনাকে আপনার অ্যাপের গ্রেডল ফাইলে আপনার পরীক্ষক এবং রিলিজ নোট নির্দিষ্ট করতে দেয়, যা আপনাকে আপনার অ্যাপের বিভিন্ন বিল্ড প্রকার এবং রূপের জন্য বিতরণ কনফিগার করতে দেয়।
এই নির্দেশিকাটিতে App Distribution গ্রেডল প্লাগইন ব্যবহার করে পরীক্ষকদের কাছে APK কীভাবে বিতরণ করা যায় তা বর্ণনা করা হয়েছে।
শুরু করার আগে
যদি আপনি ইতিমধ্যেই না করে থাকেন, তাহলে আপনার অ্যান্ড্রয়েড প্রজেক্টে Firebase যোগ করুন ।
যদি আপনি অন্য কোনও Firebase পণ্য ব্যবহার না করেন, তাহলে আপনাকে কেবল একটি প্রকল্প তৈরি করতে হবে এবং আপনার অ্যাপটি নিবন্ধন করতে হবে। তবে, যদি আপনি ভবিষ্যতে অতিরিক্ত পণ্য ব্যবহার করার সিদ্ধান্ত নেন, তাহলে উপরে লিঙ্ক করা পৃষ্ঠার সমস্ত পদক্ষেপগুলি সম্পূর্ণ করতে ভুলবেন না।
ধাপ ১. আপনার অ্যান্ড্রয়েড প্রজেক্ট সেট আপ করুন।
আপনার রুট-লেভেল (প্রজেক্ট-লেভেল) গ্র্যাডেল ফাইলে (
<project>/build.gradle.ktsঅথবা<project>/build.gradle), App Distribution গ্র্যাডেল প্লাগইনটি নির্ভরতা হিসেবে যুক্ত করুন: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.1.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.1.1' apply false }
আপনার মডিউল (অ্যাপ-লেভেল) গ্র্যাডেল ফাইলে (সাধারণত
<project>/<app-module>/build.gradle.ktsঅথবা<project>/<app-module>/build.gradle), App Distribution গ্র্যাডেল প্লাগইন যোগ করুন: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 আপনার ডিস্ট্রিবিউশনগুলিকে Firebase-এ আপলোড করতে সক্ষম করে:
-Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password
ধাপ ২. ফায়ারবেস দিয়ে প্রমাণীকরণ করুন
গ্রেডল প্লাগইন ব্যবহার করার আগে, আপনাকে প্রথমে নিম্নলিখিত যেকোনো একটি উপায়ে আপনার ফায়ারবেস প্রকল্পের সাথে প্রমাণীকরণ করতে হবে। ডিফল্টরূপে, যদি অন্য কোনও প্রমাণীকরণ পদ্ধতি ব্যবহার না করা হয় তবে গ্রেডল প্লাগইন Firebase CLI থেকে শংসাপত্রগুলি অনুসন্ধান করে।
একটি পরিষেবা অ্যাকাউন্টের মাধ্যমে প্রমাণীকরণ আপনাকে আপনার ক্রমাগত ইন্টিগ্রেশন (CI) সিস্টেমের সাথে প্লাগইনটি নমনীয়ভাবে ব্যবহার করতে দেয়। পরিষেবা অ্যাকাউন্টের শংসাপত্র প্রদানের দুটি উপায় রয়েছে:
- আপনার সার্ভিস অ্যাকাউন্ট কী ফাইলটি
build.gradleএ পাস করুন। যদি আপনার বিল্ড পরিবেশে ইতিমধ্যেই আপনার সার্ভিস অ্যাকাউন্ট কী ফাইল থাকে তবে এই পদ্ধতিটি আপনার কাছে সুবিধাজনক মনে হতে পারে। - আপনার পরিষেবা অ্যাকাউন্ট কী ফাইলের দিকে নির্দেশ করার জন্য পরিবেশগত পরিবর্তনশীল
GOOGLE_APPLICATION_CREDENTIALSসেট করুন। যদি আপনার ইতিমধ্যেই অন্য Google পরিষেবার (যেমন, Google Cloud ) জন্য অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র (ADC) কনফিগার করা থাকে তবে আপনি এই পদ্ধতিটি পছন্দ করতে পারেন।
পরিষেবা অ্যাকাউন্ট শংসাপত্র ব্যবহার করে প্রমাণীকরণ করতে:
- Google Cloud কনসোলে, আপনার প্রকল্পটি নির্বাচন করুন এবং একটি নতুন পরিষেবা অ্যাকাউন্ট তৈরি করুন।
- Firebase App Distribution অ্যাডমিন ভূমিকা যোগ করুন।
- একটি প্রাইভেট json কী তৈরি করুন এবং আপনার বিল্ড পরিবেশে অ্যাক্সেসযোগ্য স্থানে কীটি সরান। এই ফাইলটি কোথাও নিরাপদে রাখতে ভুলবেন না , কারণ এটি আপনার Firebase প্রকল্পে App Distribution প্রশাসকের অ্যাক্সেস দেয়।
- যদি আপনি ২০ সেপ্টেম্বর, ২০১৯ এর পরে আপনার অ্যাপ তৈরি করে থাকেন, তাহলে এই ধাপটি এড়িয়ে যান: Google API কনসোলে, Firebase App Distribution API সক্ষম করুন। অনুরোধ করা হলে, আপনার Firebase প্রকল্পের নামে একই নামের প্রকল্পটি নির্বাচন করুন।
আপনার পরিষেবা অ্যাকাউন্টের শংসাপত্রগুলি সরবরাহ করুন বা সনাক্ত করুন:
- আপনার
build.gradleফাইলে Gradle-এ আপনার সার্ভিস অ্যাকাউন্ট কী পাস করার জন্য,serviceCredentialsFileপ্রপার্টিটিকে private key JSON ফাইলে সেট করুন। ADC এর মাধ্যমে আপনার শংসাপত্রগুলি সনাক্ত করতে,
GOOGLE_APPLICATION_CREDENTIALSপরিবেশ পরিবর্তনশীলটিকে প্রাইভেট কী JSON ফাইলের পাথে সেট করুন। উদাহরণস্বরূপ:export GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/credentials/file.json
ADC-এর মাধ্যমে প্রমাণীকরণ সম্পর্কে আরও তথ্যের জন্য, "আপনার আবেদনে শংসাপত্র প্রদান" পড়ুন।
- আপনার
আপনার প্রকল্পটি কীভাবে প্রমাণীকরণ করবেন তার নির্দেশাবলীর জন্য 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 | আপনার অ্যাপের Firebase অ্যাপ আইডি। শুধুমাত্র তখনই প্রয়োজন যখন আপনার কাছে Google Services Gradle প্লাগইন ইনস্টল করা না থাকে। আপনি অ্যাপ আইডিটি appId="1:1234567890:android:321abc456def7890" |
serviceCredentialsFile | আপনার পরিষেবা অ্যাকাউন্টের প্রাইভেট কী JSON ফাইলের পথ। শুধুমাত্র পরিষেবা অ্যাকাউন্ট প্রমাণীকরণ ব্যবহার করলেই এটি প্রয়োজন। |
artifactType | আপনার অ্যাপের ফাইলের ধরণ নির্দিষ্ট করে। |
artifactPath | আপনি যে APK অথবা AAB ফাইলটি আপলোড করতে চান তার সম্পূর্ণ পথ। |
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;model=b0q,version=33,locale=en,orientation=portrait" অথবা, আপনি ডিভাইসের স্পেসিফিকেশনের একটি সেমিকোলন-বিভাজিত তালিকা ধারণকারী একটি ফাইলের পথ নির্দিষ্ট করতে পারেন: testDevicesFile="/path/to/testDevices.txt" |
testUsername | স্বয়ংক্রিয় পরীক্ষার সময় ব্যবহৃত স্বয়ংক্রিয় লগইনের ব্যবহারকারীর নাম। |
testPassword বা testPasswordFile | স্বয়ংক্রিয় পরীক্ষার সময় স্বয়ংক্রিয় লগইনের জন্য পাসওয়ার্ড ব্যবহার করা হবে। অথবা, আপনি একটি পাসওয়ার্ড ধারণকারী একটি প্লেইন টেক্সট ফাইলের পথ নির্দিষ্ট করতে পারেন: testPasswordFile="/path/to/testPassword.txt" |
testUsernameResource | স্বয়ংক্রিয় পরীক্ষার সময় স্বয়ংক্রিয় লগইনের জন্য ব্যবহারকারীর নাম ক্ষেত্রের জন্য রিসোর্সের নাম। |
testPasswordResource | স্বয়ংক্রিয় পরীক্ষার সময় স্বয়ংক্রিয় লগইনের জন্য পাসওয়ার্ড ক্ষেত্রের রিসোর্সের নাম। |
testNonBlocking | স্বয়ংক্রিয় পরীক্ষাগুলি অ্যাসিঙ্ক্রোনাসভাবে চালান। স্বয়ংক্রিয় পরীক্ষার ফলাফলের জন্য Firebase কনসোলটি দেখুন। |
stacktrace | ব্যবহারকারীর ব্যতিক্রমগুলির জন্য স্ট্যাকট্রেস প্রিন্ট করে। সমস্যাগুলি ডিবাগ করার সময় এটি সহায়ক। |
ধাপ ৪. পরীক্ষকদের কাছে আপনার অ্যাপ বিতরণ করুন।
অবশেষে, আপনার পরীক্ষামূলক অ্যাপটি প্যাকেজ করতে এবং পরীক্ষকদের আমন্ত্রণ জানাতে, লক্ষ্যগুলি তৈরি করুন
BUILD-VARIANTআপনার প্রোজেক্টের গ্রেডল র্যাপার দিয়েBUILD-VARIANTএবংappDistributionUpload BUILD-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
আপনি আপনার
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 পরিষেবা শংসাপত্র ফাইলের পথ। আপলোড অ্যাকশনে ব্যবহৃত একই যুক্তি।
রিলিজ আপলোডের পরে গ্র্যাডেল প্লাগইন নিম্নলিখিত লিঙ্কগুলি আউটপুট করে। এই লিঙ্কগুলি আপনাকে বাইনারি পরিচালনা করতে এবং পরীক্ষক এবং অন্যান্য ডেভেলপারদের সঠিক রিলিজ নিশ্চিত করতে সহায়তা করে:
-
firebase_console_uri- Firebase কনসোলের একটি লিঙ্ক যা একটি একক রিলিজ প্রদর্শন করে। আপনি এই লিঙ্কটি আপনার প্রতিষ্ঠানের অন্যান্য ডেভেলপারদের সাথে শেয়ার করতে পারেন। -
testing_uri- টেস্টার এক্সপেরিয়েন্স (অ্যান্ড্রয়েড নেটিভ অ্যাপ) এর রিলিজের একটি লিঙ্ক যা পরীক্ষকদের রিলিজ নোট দেখতে এবং তাদের ডিভাইসে অ্যাপটি ইনস্টল করতে দেয়। লিঙ্কটি ব্যবহার করার জন্য পরীক্ষকের রিলিজে অ্যাক্সেসের প্রয়োজন। -
binary_download_uri- একটি স্বাক্ষরিত লিঙ্ক যা সরাসরি অ্যাপ বাইনারি (APK বা AAB ফাইল) ডাউনলোড এবং ইনস্টল করে। এক ঘন্টা পরে লিঙ্কটির মেয়াদ শেষ হয়ে যায়।
একবার আপনার বিল্ড বিতরণ করার পরে, এটি Firebase কনসোলের App Distribution ড্যাশবোর্ডে ১৫০ দিন (পাঁচ মাস) জন্য উপলব্ধ থাকবে। যখন বিল্ডের মেয়াদ শেষ হওয়ার ৩০ দিন পরে, কনসোল এবং আপনার পরীক্ষকের তাদের পরীক্ষামূলক ডিভাইসে বিল্ডের তালিকা উভয়ের মধ্যেই একটি মেয়াদ শেষ হওয়ার বিজ্ঞপ্তি প্রদর্শিত হবে।
যেসব পরীক্ষককে অ্যাপটি পরীক্ষা করার জন্য আমন্ত্রণ জানানো হয়নি তারা শুরু করার জন্য ইমেল আমন্ত্রণ পান এবং বিদ্যমান পরীক্ষকরা ইমেল বিজ্ঞপ্তি পান যে একটি নতুন বিল্ড পরীক্ষা করার জন্য প্রস্তুত (পরীক্ষা অ্যাপটি কীভাবে ইনস্টল করবেন তার নির্দেশাবলীর জন্য পরীক্ষক সেট আপ নির্দেশিকা পড়ুন)। আপনি প্রতিটি পরীক্ষকের অবস্থা পর্যবেক্ষণ করতে পারেন - তারা আমন্ত্রণ গ্রহণ করেছেন কিনা এবং তারা অ্যাপটি ডাউনলোড করেছেন কিনা - Firebase কনসোলে।
অ্যাপটি পরীক্ষা করার জন্য আমন্ত্রণ গ্রহণ করার জন্য পরীক্ষকদের ৩০ দিন সময় থাকে, এর মেয়াদ শেষ হওয়ার ৫ দিন পরে, রিলিজে পরীক্ষকের পাশে Firebase কনসোলে একটি মেয়াদ শেষ হওয়ার বিজ্ঞপ্তি প্রদর্শিত হয়। পরীক্ষক সারির ড্রপ-ডাউন মেনু ব্যবহার করে এটি পুনরায় পাঠিয়ে একটি আমন্ত্রণ পুনর্নবীকরণ করা যেতে পারে।
পরবর্তী পদক্ষেপ
পরীক্ষকদের আপনার অ্যাপ সম্পর্কে প্রতিক্রিয়া পাঠানো সহজ করার জন্য (স্ক্রিনশট সহ) অ্যাপ-মধ্যস্থ প্রতিক্রিয়া বাস্তবায়ন করুন।
আপনার অ্যাপের নতুন বিল্ড ইনস্টল করার জন্য উপলব্ধ হলে আপনার পরীক্ষকদের কাছে অ্যাপ-মধ্যস্থ সতর্কতাগুলি কীভাবে প্রদর্শন করবেন তা শিখুন।
ধাপে ধাপে অ্যাপ বান্ডেল রিলিজ বিতরণ করার পদ্ধতি শিখতে অ্যান্ড্রয়েড অ্যাপ বান্ডেল কোডল্যাবটি দেখুন।
CI/CD ব্যবহার করে QA পরীক্ষকদের কাছে অ্যান্ড্রয়েড অ্যাপ বিতরণের সেরা অনুশীলনগুলি শিখুন।