বান্ডিল টুল

bundletool হলো সেই মূল টুল যা অ্যান্ড্রয়েড স্টুডিও, অ্যান্ড্রয়েড গ্র্যাডল প্লাগইন এবং গুগল প্লে একটি অ্যান্ড্রয়েড অ্যাপ বান্ডেল তৈরি করতে ব্যবহার করে। bundletool একটি অ্যাপ বান্ডেলকে বিভিন্ন APK-তে রূপান্তর করতে পারে, যা ডিভাইসগুলিতে স্থাপন করা হয়।

এটি একটি কমান্ড-লাইন টুল হিসেবেও পাওয়া যায়, যার সাহায্যে আপনি নিজেই অ্যাপ বান্ডেল তৈরি করতে এবং আপনার অ্যাপের APK-গুলোর জন্য গুগল প্লে-র সার্ভার-সাইড বিল্ড পুনরায় তৈরি করতে পারবেন।

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

যদি আগে থেকে ডাউনলোড না করে থাকেন, তাহলে গিটহাব রিপোজিটরি থেকে bundletool ডাউনলোড করুন।

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

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

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

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

bundletool ব্যবহার করে অ্যাপ বান্ডেল তৈরি করার বিষয়ে আরও তথ্যের জন্য, "Build an app bundle using 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 (আবশ্যক) অ্যান্ড্রয়েড স্টুডিও ব্যবহার করে আপনার তৈরি করা অ্যাপ বান্ডেলের পাথ নির্দিষ্ট করে। আরও জানতে, ‘আপনার প্রোজেক্ট তৈরি করুন’ পড়ুন।
--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"/> উল্লেখ করা থাকে। আরও জানতে, ফিচার মডিউল ম্যানিফেস্ট সম্পর্কে পড়ুন।

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

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

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

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

আপনি একগুচ্ছ APK তৈরি করার পর, bundletool সেই সেট থেকে সঠিক APK-গুলোর সমন্বয় একটি সংযুক্ত ডিভাইসে স্থাপন করতে পারে।

উদাহরণস্বরূপ, যদি আপনার সংযুক্ত ডিভাইসটিতে অ্যান্ড্রয়েড ৫.০ (এপিআই লেভেল ২১) বা তার চেয়ে উচ্চতর সংস্করণ থাকে, তাহলে bundletool সেই ডিভাইসে আপনার অ্যাপটি চালানোর জন্য প্রয়োজনীয় বেস এপিকে, ফিচার মডিউল এপিকে এবং কনফিগারেশন এপিকেগুলো পুশ করে। অন্যদিকে, যদি আপনার সংযুক্ত ডিভাইসটিতে অ্যান্ড্রয়েড ৪.৪ (এপিআই লেভেল ২০) বা তার চেয়ে নিম্নতর সংস্করণ থাকে, তাহলে bundletool আপনার ডিভাইসে ডেপ্লয় করার জন্য একটি সামঞ্জস্যপূর্ণ মাল্টি-এপিকে খুঁজে বের করে।

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

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

bundletool টুলটির ডিরেক্টরিতে আপনার ডিভাইসের জন্য একটি JSON ফাইল তৈরি করে। এরপর আপনি সেই JSON ফাইলে বর্ণিত কনফিগারেশনকে লক্ষ্য করে এক সেট APK তৈরি করার জন্য ফাইলটি bundletool এ পাস করতে পারেন, যেভাবে নিচে দেখানো হয়েছে:

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 bundles with bundletool and the Play Console ” দেখুন।