বান্ডিল টুল

bundletool হল একটি অন্তর্নিহিত টুল যা Android Studio, Android Gradle প্লাগইন এবং Google Play একটি Android অ্যাপ বান্ডেল তৈরি করতে ব্যবহার করে। bundletool একটি অ্যাপ বান্ডেলকে ডিভাইসে স্থাপন করা বিভিন্ন APK-তে রূপান্তর করতে পারে।

অ্যান্ড্রয়েড এসডিকে বান্ডেল (এএসবি) এবং তাদের APK গুলি bundletool দিয়ে তৈরি। এটি একটি কমান্ড-লাইন টুল হিসেবেও উপলব্ধ, যাতে আপনি নিজে অ্যাপ বান্ডেল এবং এসডিকে বান্ডেল তৈরি করতে পারেন এবং আপনার অ্যাপের APK বা রানটাইম-সক্ষম SDK-এর APK-গুলির Google Play-এর সার্ভার-সাইড বিল্ড পুনরায় তৈরি করতে পারেন।

bundletool ডাউনলোড করুন

যদি আপনি ইতিমধ্যেই না করে থাকেন, তাহলে GitHub সংগ্রহস্থল থেকে bundletool ডাউনলোড করুন।

একটি অ্যাপ বান্ডেল তৈরি এবং পরীক্ষা করুন

আপনি আপনার অ্যান্ড্রয়েড অ্যাপ বান্ডেল তৈরি করতে অ্যান্ড্রয়েড স্টুডিও অথবা bundletool কমান্ড-লাইন টুল ব্যবহার করতে পারেন এবং তারপর এই অ্যাপ বান্ডেল থেকে APK তৈরির পরীক্ষা করতে পারেন।

একটি অ্যাপ বান্ডেল তৈরি করুন

একটি Android অ্যাপ বান্ডেল তৈরি এবং সাইন করার জন্য Android Studio এবং Android Gradle প্লাগইন ব্যবহার করুন। তবে, যদি IDE ব্যবহার করা কোনও বিকল্প না হয় - উদাহরণস্বরূপ, কারণ আপনি একটি ক্রমাগত বিল্ড সার্ভার ব্যবহার করছেন - তাহলে আপনি কমান্ড লাইন থেকে আপনার অ্যাপ বান্ডেল তৈরি করতে পারেন এবং jarsigner ব্যবহার করে সাইন করতে পারেন।

bundletool ব্যবহার করে অ্যাপ বান্ডেল তৈরি সম্পর্কে আরও তথ্যের জন্য, bundletool ব্যবহার করে একটি অ্যাপ বান্ডেল তৈরি করুন দেখুন।

আপনার অ্যাপ বান্ডেল থেকে APK গুলির একটি সেট তৈরি করুন

আপনার অ্যান্ড্রয়েড অ্যাপ বান্ডেল তৈরি করার পর, পরীক্ষা করুন যে গুগল প্লে কীভাবে এটি ব্যবহার করে APK তৈরি করে এবং ডিভাইসে স্থাপন করা হলে সেই APK গুলি কীভাবে আচরণ করে।

আপনার অ্যাপ বান্ডেলটি পরীক্ষা করার দুটি উপায় আছে:

এই বিভাগে ব্যাখ্যা করা হয়েছে কিভাবে স্থানীয়ভাবে আপনার অ্যাপ বান্ডেল পরীক্ষা করার জন্য bundletool ব্যবহার করবেন।

যখন bundletool আপনার অ্যাপ বান্ডেল থেকে APK তৈরি করে, তখন এটি APK সেট আর্কাইভ নামক একটি কন্টেইনারে জেনারেট করা APK গুলিকে অন্তর্ভুক্ত করে, যা .apks ফাইল এক্সটেনশন ব্যবহার করে। আপনার অ্যাপ বান্ডেল থেকে আপনার অ্যাপ যে সমস্ত ডিভাইস কনফিগারেশন সমর্থন করে তার জন্য একটি APK সেট তৈরি করতে, bundletool build-apks কমান্ডটি ব্যবহার করুন, যেমনটি দেখানো হয়েছে:

bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks

যদি আপনি কোনও ডিভাইসে APK গুলি স্থাপন করতে চান, তাহলে আপনাকে আপনার অ্যাপের সাইনিং তথ্যও অন্তর্ভুক্ত করতে হবে, যেমনটি নিম্নলিখিত কমান্ডে দেখানো হয়েছে। যদি আপনি সাইনিং তথ্য নির্দিষ্ট না করেন, তাহলে bundletool আপনার জন্য একটি ডিবাগ কী ব্যবহার করে আপনার APK গুলি সাইন করার চেষ্টা করবে।

bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
--ks=/MyApp/keystore.jks
--ks-pass=file:/MyApp/keystore.pwd
--ks-key-alias=MyKeyAlias
--key-pass=file:/MyApp/key.pwd

bundletool build-apks কমান্ড ব্যবহার করার সময় আপনি যে বিভিন্ন ফ্ল্যাগ এবং বিকল্পগুলি সেট করতে পারেন সেগুলি নিম্নলিখিত টেবিলে আরও বিশদে বর্ণনা করা হয়েছে:

সারণি ১. bundletool build-apks কমান্ডের বিকল্প

পতাকা বিবরণ
--bundle= path (প্রয়োজনীয়) Android Studio ব্যবহার করে আপনার তৈরি করা অ্যাপ বান্ডেলের পথ নির্দিষ্ট করে। আরও জানতে, Build your project পড়ুন।
--output= path (প্রয়োজনীয়) আউটপুট .apks ফাইলের নাম উল্লেখ করে, যাতে আপনার অ্যাপের জন্য সমস্ত APK আর্টিফ্যাক্ট থাকে। একটি ডিভাইসে এই ফাইলের আর্টিফ্যাক্টগুলি পরীক্ষা করতে, একটি সংযুক্ত ডিভাইসে APK কীভাবে স্থাপন করবেন সে সম্পর্কে বিভাগের ধাপগুলি অনুসরণ করুন।
--overwrite --output বিকল্পটি ব্যবহার করে আপনার নির্দিষ্ট পাথ দিয়ে যেকোনো বিদ্যমান আউটপুট ফাইল ওভাররাইট করে। যদি আপনি এই পতাকাটি অন্তর্ভুক্ত না করেন এবং আউটপুট ফাইলটি ইতিমধ্যেই বিদ্যমান থাকে, তাহলে আপনি একটি বিল্ড ত্রুটি পাবেন।
--aapt2= path AAPT2-এর জন্য একটি কাস্টম পাথ নির্দিষ্ট করে। ডিফল্টরূপে, bundletool AAPT2-এর নিজস্ব সংস্করণ অন্তর্ভুক্ত থাকে।
--ks= path (ঐচ্ছিক) APK গুলিতে স্বাক্ষর করার জন্য ব্যবহৃত ডিপ্লয়মেন্ট কীস্টোরের পথ নির্দিষ্ট করে। যদি আপনি এই পতাকাটি অন্তর্ভুক্ত না করেন, তাহলে bundletool একটি ডিবাগ সাইনিং কী দিয়ে আপনার APK গুলিতে স্বাক্ষর করার চেষ্টা করে।
--ks-pass=pass: password
অথবা
--ks-pass=file: /path/to/file
আপনার কীস্টোর পাসওয়ার্ড নির্দিষ্ট করে। যদি আপনি প্লেইন টেক্সটে একটি পাসওয়ার্ড নির্দিষ্ট করেন, তাহলে pass: দিয়ে এটিকে যোগ্যতা দিন। যদি আপনি এমন একটি ফাইলের পাথ পাস করেন যেখানে পাসওয়ার্ড রয়েছে, তাহলে file: দিয়ে এটিকে যোগ্যতা দিন। যদি আপনি --ks-pass উল্লেখ না করে --ks ফ্ল্যাগ ব্যবহার করে একটি কীস্টোর নির্দিষ্ট করেন, bundletool আপনাকে কমান্ড লাইন থেকে একটি পাসওয়ার্ডের জন্য অনুরোধ করবে।
--ks-key-alias= alias আপনি যে সাইনিং কী ব্যবহার করতে চান তার উপনাম নির্দিষ্ট করে।
--key-pass=pass: password
অথবা
--key-pass=file: /path/to/file
সাইনিং কী-এর জন্য পাসওয়ার্ড নির্দিষ্ট করে। যদি আপনি প্লেইন টেক্সটে একটি পাসওয়ার্ড নির্দিষ্ট করেন, তাহলে pass: দিয়ে এটিকে যোগ্যতা দিন। যদি আপনি এমন একটি ফাইলের পথ পাস করেন যেখানে পাসওয়ার্ড রয়েছে, তাহলে file: দিয়ে এটিকে যোগ্যতা দিন।

যদি এই পাসওয়ার্ডটি কীস্টোরের পাসওয়ার্ডের মতো হয়, তাহলে আপনি এই পতাকাটি বাদ দিতে পারেন।

--connected-device bundletool এমন APK তৈরি করার নির্দেশ দেয় যা একটি সংযুক্ত ডিভাইসের কনফিগারেশনকে লক্ষ্য করে। যদি আপনি এই পতাকাটি অন্তর্ভুক্ত না করেন, bundletool আপনার অ্যাপ সমর্থিত সমস্ত ডিভাইস কনফিগারেশনের জন্য APK তৈরি করে।
--device-id= serial-number যদি আপনার একাধিক সংযুক্ত ডিভাইস থাকে, তাহলে আপনি যে ডিভাইসে আপনার অ্যাপটি স্থাপন করতে চান তার সিরিয়াল আইডি নির্দিষ্ট করতে এই পতাকাটি ব্যবহার করুন।
--device-spec= spec_json একটি .json ফাইলের একটি পাথ প্রদান করে যা আপনি যে ডিভাইস কনফিগারেশনটি লক্ষ্য করতে চান তা নির্দিষ্ট করে। আরও জানতে, ডিভাইস স্পেসিফিকেশন JSON ফাইলগুলি কীভাবে তৈরি এবং ব্যবহার করবেন সে সম্পর্কে বিভাগে যান।
--mode=universal মোডটিকে universal তে সেট করে। যদি আপনি চান যে bundletool আপনার অ্যাপের সমস্ত কোড এবং রিসোর্স সহ একটি একক APK তৈরি করুক, তাহলে এই বিকল্পটি ব্যবহার করুন, যাতে APKটি আপনার অ্যাপ সমর্থিত সমস্ত ডিভাইস কনফিগারেশনের সাথে সামঞ্জস্যপূর্ণ হয়।

দ্রষ্টব্য: bundletool শুধুমাত্র এমন বৈশিষ্ট্য মডিউল রয়েছে যা একটি সর্বজনীন APK-তে তাদের ম্যানিফেস্টে <dist:fusing dist:include="true"/> নির্দিষ্ট করে। আরও জানতে, বৈশিষ্ট্য মডিউল manifest সম্পর্কে পড়ুন।

মনে রাখবেন, এই APK গুলি একটি নির্দিষ্ট ডিভাইস কনফিগারেশনের জন্য অপ্টিমাইজ করা APK গুলির চেয়ে বড়। তবে, অভ্যন্তরীণ পরীক্ষকদের সাথে এগুলি ভাগ করা সহজ, উদাহরণস্বরূপ, যারা একাধিক ডিভাইস কনফিগারেশনে আপনার অ্যাপটি পরীক্ষা করতে চান।

--local-testing স্থানীয় পরীক্ষার জন্য আপনার অ্যাপ বান্ডেল সক্ষম করে। স্থানীয় পরীক্ষার মাধ্যমে Google Play সার্ভারে আপলোড করার প্রয়োজন ছাড়াই দ্রুত, পুনরাবৃত্তিমূলক পরীক্ষার চক্রের সুযোগ করে দেয়।

--local-testing ফ্ল্যাগ ব্যবহার করে মডিউল ইনস্টলেশন কীভাবে পরীক্ষা করবেন তার একটি উদাহরণের জন্য, স্থানীয়ভাবে মডিউল ইনস্টলেশন পরীক্ষা করুন দেখুন।

একটি সংযুক্ত ডিভাইসে APK স্থাপন করুন

APK গুলির একটি সেট তৈরি করার পরে, bundletool সেই সেট থেকে একটি সংযুক্ত ডিভাইসে APK গুলির সঠিক সংমিশ্রণ স্থাপন করতে পারে।

উদাহরণস্বরূপ, যদি আপনার একটি সংযুক্ত ডিভাইস থাকে যা Android 5.0 (API লেভেল 21) বা তার উচ্চতর সংস্করণে চলে, তাহলে bundletool সেই ডিভাইসে আপনার অ্যাপ চালানোর জন্য প্রয়োজনীয় বেস APK, ফিচার মডিউল APK এবং কনফিগারেশন APKগুলিকে পুশ করে। বিকল্পভাবে, যদি আপনার সংযুক্ত ডিভাইসটি Android 4.4 (API লেভেল 20) বা তার নিম্নতর সংস্করণে চলে, তাহলে bundletool আপনার ডিভাইসে স্থাপনের জন্য একটি সামঞ্জস্যপূর্ণ মাল্টি-APK অনুসন্ধান করে।

একটি APK সেট থেকে আপনার অ্যাপ স্থাপন করতে, install-apks কমান্ড ব্যবহার করুন এবং নিম্নলিখিত কমান্ডে দেখানো --apks= /path/to/apks ফ্ল্যাগ ব্যবহার করে APK সেটের পাথ নির্দিষ্ট করুন। যদি আপনার একাধিক ডিভাইস সংযুক্ত থাকে, --device-id= serial-id ফ্ল্যাগ যোগ করে একটি টার্গেট ডিভাইস নির্দিষ্ট করুন।

bundletool install-apks --apks=/MyApp/my_app.apks

ডিভাইস-নির্দিষ্ট APK গুলির একটি সেট তৈরি করুন

যদি আপনি আপনার অ্যাপ সমর্থিত সকল ডিভাইস কনফিগারেশনের জন্য APK-এর একটি সেট তৈরি করতে না চান, তাহলে আপনি --connected-device বিকল্পটি ব্যবহার করে এমন APK তৈরি করতে পারেন যা শুধুমাত্র একটি সংযুক্ত ডিভাইসের কনফিগারেশনকে লক্ষ্য করে, যেমনটি নিম্নলিখিত কমান্ডে দেখানো হয়েছে। যদি আপনার একাধিক ডিভাইস সংযুক্ত থাকে, তাহলে --device-id= serial-id পতাকা অন্তর্ভুক্ত করে একটি লক্ষ্য ডিভাইস নির্দিষ্ট করুন।

bundletool build-apks --connected-device
--bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks

ডিভাইস স্পেসিফিকেশন JSON ফাইল তৈরি এবং ব্যবহার করুন

bundletool একটি APK সেট তৈরি করতে পারে যা একটি JSON ফাইল দ্বারা নির্দিষ্ট করা একটি ডিভাইস কনফিগারেশনকে লক্ষ্য করে। প্রথমে একটি সংযুক্ত ডিভাইসের জন্য একটি JSON ফাইল তৈরি করতে, নিম্নলিখিত কমান্ডটি চালান:

bundletool get-device-spec --output=/tmp/device-spec.json

bundletool আপনার ডিভাইসের জন্য টুলের ডিরেক্টরিতে একটি JSON ফাইল তৈরি করে। এরপর আপনি bundletool এ ফাইলটি পাস করতে পারেন যাতে APK-এর একটি সেট তৈরি করা যায় যা শুধুমাত্র সেই JSON ফাইলে বর্ণিত কনফিগারেশনকে লক্ষ্য করে, নিম্নরূপ:

bundletool build-apks --device-spec=/MyApp/pixel2.json
--bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks

ম্যানুয়ালি একটি ডিভাইস স্পেসিফিকেশন JSON তৈরি করুন

যদি আপনার সেই ডিভাইসে অ্যাক্সেস না থাকে যার জন্য আপনি একটি লক্ষ্যযুক্ত APK সেট তৈরি করতে চান - উদাহরণস্বরূপ, যদি আপনি এমন একটি ডিভাইস দিয়ে আপনার অ্যাপটি চেষ্টা করতে চান যা আপনার হাতে নেই - তাহলে আপনি নিম্নলিখিত ফর্ম্যাটটি ব্যবহার করে ম্যানুয়ালি একটি JSON ফাইল তৈরি করতে পারেন:

{
  "supportedAbis": ["arm64-v8a", "armeabi-v7a"],
  "supportedLocales": ["en", "fr"],
  "screenDensity": 640,
  "sdkVersion": 27
}

এরপর আপনি এই JSON টি bundle extract-apks কমান্ডে পাস করতে পারেন, যেমনটি পূর্ববর্তী বিভাগে বর্ণিত হয়েছে।

একটি বিদ্যমান APK সেট থেকে ডিভাইস-নির্দিষ্ট APK গুলি বের করুন

যদি আপনার কাছে একটি বিদ্যমান APK সেট থাকে এবং আপনি এটি থেকে একটি নির্দিষ্ট ডিভাইস কনফিগারেশনকে লক্ষ্য করে এমন APK গুলির একটি উপসেট বের করতে চান, তাহলে আপনি extract-apks কমান্ড ব্যবহার করতে পারেন এবং একটি ডিভাইস স্পেসিফিকেশন JSON নির্দিষ্ট করতে পারেন, নিম্নরূপ:

bundletool extract-apks
--apks=/MyApp/my_existing_APK_set.apks
--output-dir=/MyApp/my_pixel2_APK_set.apks
--device-spec=/MyApp/bundletool/pixel2.json

একটি APK সেটে APK গুলির আনুমানিক ডাউনলোড আকার পরিমাপ করুন

একটি APK সেটে APK গুলির আনুমানিক ডাউনলোড আকার পরিমাপ করতে যেগুলি তারের উপর সংকুচিত করে পরিবেশন করা হবে, get-size total কমান্ডটি ব্যবহার করুন:

bundletool get-size total --apks=/MyApp/my_app.apks

আপনি নিম্নলিখিত ফ্ল্যাগগুলি ব্যবহার করে get-size total কমান্ডের আচরণ পরিবর্তন করতে পারেন:

সারণী ২। get-size total কমান্ডের জন্য বিকল্পগুলি

পতাকা বিবরণ
--apks= path (প্রয়োজনীয়) বিদ্যমান APK সেট ফাইলের পাথ নির্দিষ্ট করে যার ডাউনলোড সাইজ পরিমাপ করা হচ্ছে।
--device-spec= path ম্যাচিংয়ের জন্য ব্যবহার করার জন্য ডিভাইস স্পেক ফাইলের ( get-device-spec থেকে অথবা ম্যানুয়ালি তৈরি) পাথ নির্দিষ্ট করে। কনফিগারেশনের একটি সেট মূল্যায়ন করার জন্য আপনি একটি আংশিক পাথ নির্দিষ্ট করতে পারেন।
--dimensions= dimensions আকার অনুমান গণনা করার সময় ব্যবহৃত মাত্রা নির্দিষ্ট করে। কমা দ্বারা পৃথক করা তালিকা গ্রহণ করে: SDK , ABI , SCREEN_DENSITY , এবং LANGUAGE . সমস্ত মাত্রা জুড়ে পরিমাপ করতে, ALL নির্দিষ্ট করুন।
--instant ইনস্টলযোগ্য APK-এর পরিবর্তে তাৎক্ষণিক-সক্ষম APK-এর ডাউনলোড সাইজ পরিমাপ করে। ডিফল্টরূপে, bundletool ইনস্টলযোগ্য APK ডাউনলোড সাইজ পরিমাপ করে।
--modules= modules পরিমাপে বিবেচনা করার জন্য APK সেটে কমা দ্বারা পৃথক করা মডিউলগুলির একটি তালিকা নির্দিষ্ট করে। bundletool কমান্ডটি স্বয়ংক্রিয়ভাবে নির্দিষ্ট সেটের জন্য যেকোনো নির্ভরশীল মডিউল অন্তর্ভুক্ত করে। ডিফল্টরূপে, কমান্ডটি প্রথম ডাউনলোডের সময় ইনস্টল করা সমস্ত মডিউলের ডাউনলোড আকার পরিমাপ করে।

অতিরিক্ত সম্পদ

bundletool ব্যবহার সম্পর্কে আরও জানতে, App Bundles: Testing bundletool এবং Play Console দেখুন।