বান্ডিল টুল

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

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

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

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

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

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

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

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

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

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

আপনি আপনার অ্যান্ড্রয়েড অ্যাপ বান্ডেল তৈরি করার পরে, Google Play কীভাবে 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 কমান্ড ব্যবহার করার সময় আরও বিস্তারিতভাবে সেট করতে পারেন:

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

পতাকা বর্ণনা
--bundle= path (প্রয়োজনীয়) Android স্টুডিও ব্যবহার করে আপনার তৈরি করা অ্যাপ বান্ডেলের পথ নির্দিষ্ট করে। আরও জানতে, আপনার প্রকল্প তৈরি করুন পড়ুন।
--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 একটি সংযুক্ত ডিভাইসের কনফিগারেশনকে লক্ষ্য করে এমন APK তৈরি করতে bundletool নির্দেশ দেয়। আপনি যদি এই পতাকাটি অন্তর্ভুক্ত না করেন তবে আপনার অ্যাপ সমর্থন করে এমন সমস্ত ডিভাইস কনফিগারেশনের জন্য 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 স্থানীয় পরীক্ষার জন্য আপনার অ্যাপ বান্ডেল সক্ষম করে। স্থানীয় পরীক্ষা Google Play সার্ভারে আপলোড করার প্রয়োজন ছাড়াই দ্রুত, পুনরাবৃত্তিমূলক পরীক্ষার চক্রের অনুমতি দেয়।

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

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

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

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

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

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

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

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

যদি আপনার কাছে একটি বিদ্যমান 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 কমান্ডের আচরণ পরিবর্তন করতে পারেন:

সারণী 2. 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 কমান্ড স্বয়ংক্রিয়ভাবে নির্দিষ্ট সেটের জন্য কোনো নির্ভরশীল মডিউল অন্তর্ভুক্ত করে। ডিফল্টরূপে, কমান্ডটি প্রথম ডাউনলোডের সময় ইনস্টল করা সমস্ত মডিউলের ডাউনলোড আকার পরিমাপ করে।

একটি SDK বান্ডেল নির্ভরতা সহ একটি অ্যাপ বান্ডেল তৈরি করুন (পরীক্ষামূলক)

আপনি কমান্ড লাইন থেকে একটি Android SDK বান্ডেল (ASB) নির্ভরতার সাথে আপনার Android App Bundle তৈরি করতে পারেন এবং jarsigner ব্যবহার করে স্বাক্ষর করতে পারেন।

প্রতিটি অ্যাপ বান্ডেল মডিউলে একটি মডিউল প্রোটোকল বাফার ( .pb ) ফাইল থাকে: runtime_enabled_sdk_config.pb । এই ফাইলটিতে SDK-এর তালিকা রয়েছে যার উপর একটি অ্যাপ বান্ডেল মডিউল নির্ভর করে। এই ফাইলটির সম্পূর্ণ সংজ্ঞার জন্য, runtime_enabled_sdk_config.proto ফাইলটি দেখুন।

একটি SDK বান্ডেল নির্ভরতা সহ একটি অ্যাপ বান্ডেল তৈরি করতে, bundletool ব্যবহার করে একটি অ্যাপ বান্ডেল তৈরি করার বিষয়ে বিভাগে ধাপগুলি অনুসরণ করুন এবং সংকলিত কোড এবং সংস্থান সহ প্রতিটি অ্যাপ মডিউলের জিপ ফাইলে একটি runtime_enabled_sdk_config.pb ফাইল যোগ করুন।

runtime_enabled_sdk_config.pb ফাইলের কিছু উল্লেখযোগ্য ক্ষেত্র:

  • শংসাপত্র ডাইজেস্ট: SDK-এর APKগুলিতে স্বাক্ষর করতে ব্যবহৃত কীটির জন্য শংসাপত্রের SHA-256 ডাইজেস্ট৷ এটি Android SDK আর্কাইভ ফর্ম্যাটে SdkMetadata.pb ফাইলের শংসাপত্রের সাথে মিলে যায়৷

  • রিসোর্স প্যাকেজ আইডি: যে প্যাকেজ আইডিটি এই SDK-এর সমস্ত সংস্থানগুলিকে অ্যাপে SDK এম্বেড করার জন্য APK তৈরি করার সময় পুনরায় ম্যাপ করা হয়৷ এটি পশ্চাদগামী সামঞ্জস্য সক্ষম করে।

একটি SDK শুধুমাত্র একটি মডিউলে উপস্থিত হতে পারে৷ যদি একাধিক মডিউল একই SDK-এর উপর নির্ভর করে, তাহলে এই নির্ভরতাটি অনুলিপি করা উচিত এবং বেস মডিউলে সরানো উচিত। বিভিন্ন মডিউল SDK এর বিভিন্ন সংস্করণের উপর নির্ভর করতে পারে না।

একটি SDK বান্ডেল নির্ভরতা সহ একটি অ্যাপ বান্ডেল থেকে APK তৈরি করুন (পরীক্ষামূলক)

আপনার অ্যাপ বান্ডেল থেকে APK তৈরি করতে, আপনার অ্যাপ বান্ডেল থেকে APK-এর সেট জেনারেট করার বিষয়ে বা ডিভাইস-নির্দিষ্ট APK-এর সেট জেনারেট করার বিষয়ে বিভাগে দেওয়া ধাপগুলি অনুসরণ করুন এবং অ্যাপের SDK-এর সাথে bundletool build-apks কমান্ড প্রদান করুন উপর নির্ভর করে। এই SDKগুলি SDK বান্ডেল ফর্ম্যাটে বা SDK আর্কাইভ ফর্ম্যাটে দেওয়া যেতে পারে৷

আপনি নিম্নরূপ --sdk-bundles পতাকা যোগ করে SDK বান্ডেল হিসাবে SDK প্রদান করতে পারেন:

bundletool build-apks --bundle=app.aab --sdk-bundles=sdk1.asb,sdk2.asb \
    --output=app.apks

আপনি নিম্নরূপ --sdk-archives পতাকা যোগ করে SDK সংরক্ষণাগার হিসাবে SDK প্রদান করতে পারেন:

bundletool build-apks --bundle=app.aab --sdk-archives=sdk1.asar,sdk2.asar \
    --output=app.apks
SDK লাইব্রেরি সমর্থন ছাড়া ডিভাইসগুলির জন্য একটি SDK বান্ডেল নির্ভরতা সহ একটি অ্যাপ বান্ডেল থেকে APK তৈরি করুন

অ্যান্ড্রয়েড 13-এর আগের ডিভাইসগুলি SDK লাইব্রেরি ইনস্টল করা বা SDK রানটাইমে চালানো সমর্থন করে না। Bundletool পিছনের সামঞ্জস্যের জটিলতা লুকিয়ে রাখে এবং আপনি যখন --sdk-bundles বা --sdk-archives বিকল্পের সাথে bundletool build-apks চালান তখন একই অ্যাপ বান্ডেল থেকে আপনার APK সেটের একাধিক ভেরিয়েন্ট তৈরি করে। একাধিক ভেরিয়েন্ট বিভিন্ন ক্ষমতা সহ ডিভাইসগুলিকে লক্ষ্য করে:

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

আপনি যেভাবে SDK নির্ভরতা ছাড়াই অ্যাপ বান্ডেলের জন্য APK তৈরি করেন তার অনুরূপ, bundletool extract-apks এবং bundletool install-apks সংযুক্ত ডিভাইসের জন্য বা প্রদত্ত ডিভাইস কনফিগারেশনের জন্য সেরা ভেরিয়েন্ট থেকে APKগুলির একটি ফিল্টার করা সেট ফিরিয়ে দেয়।

উন্নত ব্যবহারের ক্ষেত্রে যেখানে আপনি শুধুমাত্র পুরানো ডিভাইসগুলির জন্য একটি নির্দিষ্ট অ্যাপের জন্য একটি SDK সংরক্ষণাগার থেকে APK বিভাজন তৈরি করতে আগ্রহী, নিম্নরূপ bundletool build-sdk-apks-for-app কমান্ডটি ব্যবহার করুন:

bundletool build-sdk-apks-for-app --app-properties=app-properties.json \
    --sdk-archive=sdk.asar --output=sdk.apks

app-properties ফাইলে runtime_enabled_sdk_config.proto ফাইলে বর্ণিত ক্ষেত্রগুলি থাকা উচিত। app-properties ফাইলটি দেখতে এইরকম:

{
  "package_name": "com.my.app",
  "version_code": 1234,
  "min_sdk_version": 21,
  "resources_package_id": 0x7e
}

bundletool build-sdk-apks-for-app কমান্ডটি অ্যাপ APK-এর উপসেট তৈরি করে যা অ্যাপ প্যাকেজ নামের অধীনে SDK বিষয়বস্তুর সাথে মিলে যায়। আপনি এই APKগুলিকে অ্যাপের সামগ্রী সহ অন্যান্য APKগুলির সাথে একত্রিত করতে পারেন৷ উদাহরণস্বরূপ, যদি আপনি সেগুলিকে আলাদাভাবে এবং ক্রমবর্ধমানভাবে তৈরি করেন এবং SDK রানটাইম সমর্থন করে না এমন একটি ডিভাইসে একসাথে ইনস্টল করেন।

একটি SDK বান্ডিল তৈরি করুন এবং পরীক্ষা করুন (পরীক্ষামূলক)

আপনি একটি ASB তৈরি করতে bundletool ব্যবহার করতে পারেন এবং ইনস্টলেশন এবং বিতরণের জন্য প্রয়োজনীয় ফাইল তৈরি করতে পরীক্ষা করতে পারেন।

একটি SDK বান্ডিল তৈরি করুন

আপনি কমান্ড লাইন থেকে আপনার ASB তৈরি করতে পারেন এবং jarsigner ব্যবহার করে সাইন ইন করতে পারেন।

একটি SDK বান্ডিল তৈরি করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. একটি অ্যাপ বান্ডেলের মতো একই ধাপ অনুসরণ করে প্রোটো ফর্ম্যাটে SDK বান্ডেলের ম্যানিফেস্ট এবং সংস্থানগুলি তৈরি করুন

  2. আপনার SDK-এর সংকলিত কোড এবং সংস্থানগুলিকে একটি বেস জিপ ফাইলে প্যাকেজ করুন , যেমন আপনি একটি অ্যাপ মডিউলের সাথে করবেন৷

  3. একটি SdkModulesConfig.pb.json ফাইল এবং একটি SdkBundleConfig.pb.json ফাইল তৈরি করুন, যা Android SDK বান্ডেল স্পেসিফিকেশনে বর্ণিত ফর্ম্যাটের সাথে মিলে যায়৷

  4. bundletool build-sdk-bundle কমান্ড ব্যবহার করে আপনার ASB তৈরি করুন, নিম্নরূপ:

bundletool build-sdk-bundle --sdk-bundle-config=SdkBundleConfig.pb.json \
    --sdk-modules-config=SdkModulesConfig.pb.json \
    --modules=base.zip --output=sdk.asb

নিচের সারণীটি বিভিন্ন পতাকা এবং বিকল্পগুলি বর্ণনা করে যা আপনি bundletool build-sdk-bundle কমান্ড ব্যবহার করার সময় আরও বিস্তারিতভাবে সেট করতে পারেন।

সারণি 3. bundletool build-sdk-bundle কমান্ডের বিকল্প

পতাকা বর্ণনা
--modules (প্রয়োজনীয়) যে মডিউল ফাইল থেকে আপনি চূড়ান্ত ASB তৈরি করতে চান।
--output (প্রয়োজনীয়) যেখানে আপনি ASB তৈরি করতে চান সেই পথ।
--sdk-modules-config (প্রয়োজনীয়) একটি JSON ফাইলের পথ যা SDK মডিউলগুলির কনফিগারেশন বর্ণনা করে৷ কিভাবে JSON ফাইল ফর্ম্যাট করতে হয় তা জানতে, Android SDK বান্ডেল স্পেসিফিকেশন বিভাগটি দেখুন।
--sdk-bundle-config একটি JSON ফাইলের পথ যা SDK বান্ডেলের কনফিগারেশন বর্ণনা করে। কিভাবে JSON ফাইল ফর্ম্যাট করতে হয় তা জানতে, Android SDK বান্ডেল স্পেসিফিকেশন বিভাগটি দেখুন।
--metadata-file ASB-এর জন্য মেটাডেটা অন্তর্ভুক্ত করার জন্য ফাইল। পতাকা মানের বিন্যাস হল <bundle-path>:<physical-file> , যেখানে <bundle-path> SDK বান্ডেলের মেটাডেটা ডিরেক্টরির ভিতরে ফাইলের অবস্থান নির্দেশ করে এবং <physical-file> হল একটি বিদ্যমান ফাইল যাতে কাঁচা ডেটা রয়েছে সংরক্ষণ করা পতাকা পুনরাবৃত্তি করা যেতে পারে.
--overwrite সেট করা হলে, এই বিকল্পটি পূর্ববর্তী বিদ্যমান আউটপুটটি ওভাররাইট করে।

একটি SDK বান্ডেল থেকে APK তৈরি করুন

আপনি আপনার ASB তৈরি করার পরে, আপনি নিম্নলিখিত কোডে দেখানো হিসাবে bundletool build-sdk-apks কমান্ড ব্যবহার করে স্থানীয়ভাবে একটি SDK বান্ডিল এর APK তৈরি করে পরীক্ষা করতে পারেন:

bundletool build-sdk-apks --sdk-bundle=sdk.asb --output=sdk.apks

যখন bundletool আপনার SDK বান্ডিল থেকে APKs তৈরি করে, তখন টুলটিতে APK সেট সংরক্ষণাগার নামে একটি পাত্রে APKS অন্তর্ভুক্ত থাকে, যা .apks ফাইল এক্সটেনশন ব্যবহার করে। bundletool SDK বান্ডেল থেকে একটি একক স্বতন্ত্র APK তৈরি করে যা সমস্ত ডিভাইস কনফিগারেশনকে লক্ষ্য করে।

আপনি যদি একটি ডিভাইসে ASB স্থাপন করতে চান, তাহলে আপনাকে আপনার অ্যাপের সাইনিং তথ্যও অন্তর্ভুক্ত করতে হবে, যেমনটি নিম্নলিখিত কমান্ডে দেখানো হয়েছে:

bundletool build-sdk-apks --sdk-bundle=sdk.asb --output=sdk.apks \
    --ks=keystore.jks \
    --ks-pass=file:/keystore.pwd \
    --ks-key-alias=KeyAlias \
    --key-pass=file:/key.pwd

নিচের সারণীটি বিভিন্ন পতাকা এবং বিকল্পগুলি বর্ণনা করে যা আপনি bundletool build-sdk-apks কমান্ড ব্যবহার করার সময় আরও বিস্তারিতভাবে সেট করতে পারেন।

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

পতাকা বর্ণনা
--sdk-bundle (প্রয়োজনীয়) SDK বান্ডেলের পথ। এক্সটেনশন থাকতে হবে .asb ​​.
--output (প্রয়োজনীয়) ডিফল্টরূপে, যে পাথ আপনি APK সেট সংরক্ষণাগার তৈরি করতে চান। বিকল্পভাবে, আপনি যদি --output-format=DIRECTORY ব্যবহার করেন, এটি সেই ডিরেক্টরির পথ যেখানে আপনি জেনারেট করা APK সংরক্ষণ করতে চান৷
--ks কীস্টোরের পথ যা আপনি জেনারেট করা APKগুলিতে স্বাক্ষর করতে ব্যবহার করতে চান৷
--ks-key-alias জেনারেট করা APKগুলিতে স্বাক্ষর করতে কীস্টোরে ব্যবহার করার জন্য কীটির উপনাম।
--key-pass

কীস্টোরে থাকা কীটির পাসওয়ার্ড জেনারেট করা APKগুলিতে স্বাক্ষর করতে ব্যবহার করতে হবে৷

আপনি যদি পাসওয়ার্ডটি পরিষ্কার পাঠে পাস করেন, তাহলে আপনাকে অবশ্যই pass: উদাহরণস্বরূপ, pass:qwerty । যদি পাসওয়ার্ডটি একটি ফাইলের প্রথম লাইন হয়, তাহলে আপনাকে অবশ্যই file: উদাহরণস্বরূপ, file:/tmp/myPassword.txt

এই পতাকা সেট না থাকলে, কীস্টোর পাসওয়ার্ড চেষ্টা করা হয়। যদি এটি ব্যর্থ হয়, কমান্ড-লাইন টার্মিনাল আপনাকে একটি পাসওয়ার্ডের জন্য অনুরোধ করে।

--ks-pass

কীস্টোরের পাসওয়ার্ড জেনারেট করা APKগুলিতে স্বাক্ষর করতে ব্যবহার করতে হবে।

আপনি যদি পাসওয়ার্ডটি পরিষ্কার পাঠে পাস করেন, তাহলে আপনাকে অবশ্যই pass: উদাহরণস্বরূপ, pass:qwerty । যদি পাসওয়ার্ডটি একটি ফাইলের প্রথম লাইন হয়, তাহলে আপনাকে অবশ্যই file: উদাহরণস্বরূপ file:/tmp/myPassword.txt

যদি এই পতাকা সেট করা না থাকে, কমান্ড-লাইন টার্মিনাল আপনাকে একটি পাসওয়ার্ডের জন্য অনুরোধ করে।

--aapt2 AAPT2 বাইনারি ব্যবহার করার পথ।
--output-format জেনারেট করা APK-এর জন্য আউটপুট ফর্ম্যাট। ডিফল্টরূপে, এই বিকল্পটি APK_SET তে সেট করা থাকে, যা তৈরি করা APK সেট সংরক্ষণাগারে APKগুলিকে আউটপুট করে৷ DIRECTORY তে সেট করা থাকলে, এটি --output দ্বারা নির্দিষ্ট করা ডিরেক্টরিতে APKগুলিকে আউটপুট করে।
--verbose সেট করা হলে, এই বিকল্পটি স্ট্যান্ডার্ড আউটপুটে কমান্ড এক্সিকিউশন সম্পর্কে অতিরিক্ত তথ্য প্রিন্ট করে।
--version-code SDK সংস্করণ কোড। এটি Android প্ল্যাটফর্ম দ্বারা APK ইনস্টল করার জন্য ব্যবহৃত সংস্করণ কোড, SDK সংস্করণ নয়। এই বিকল্পটি একটি নির্বিচারে মান সেট করা যেতে পারে। যদি সেট না করা হয়, এটি ডিফল্ট 0 এ।
--overwrite সেট করা হলে, এই বিকল্পটি পূর্ববর্তী বিদ্যমান আউটপুটটি ওভাররাইট করে।

SDK APK এর আকার স্থাপন, নিষ্কাশন এবং পরিমাপ করুন

আপনি একটি সংযুক্ত ডিভাইসে APK গুলি স্থাপন করতে, একটি বিদ্যমান APK সেট থেকে ডিভাইস-নির্দিষ্ট APKগুলি বের করতে এবং একটি APK সেটে APKগুলির আনুমানিক ডাউনলোড আকার পরিমাপ করতে অ্যাপ্লিকেশনগুলির জন্য ব্যবহৃত একই পদক্ষেপগুলি অনুসরণ করতে পারেন৷

একটি SDK বান্ডেল থেকে একটি SDK আর্কাইভ তৈরি করুন৷

আপনি আপনার বিতরণ চ্যানেলে আপনার ASB আপলোড করার পরে, উদাহরণস্বরূপ Google Play, Maven এর মাধ্যমে অ্যাপ বিকাশকারীদের বিতরণের জন্য ASB একটি Android SDK আর্কাইভ ( .asar ) এ রূপান্তরিত হয়৷ ফর্ম্যাট সম্পর্কে আরও বিশদ বিবরণের জন্য, SDK আর্কাইভ ফর্ম্যাট স্পেসিফিকেশন সম্পর্কে বিভাগটি দেখুন।

আপনি আপনার ASB তৈরি করার পরে, আপনি নিম্নলিখিত কোডে দেখানো হিসাবে bundletool build-sdk-asar কমান্ড ব্যবহার করে স্থানীয়ভাবে একটি Android SDK আর্কাইভের প্রজন্ম পরীক্ষা করতে পারেন:

bundletool build-sdk-asar --sdk-bundle=sdk.asb --output=sdk.asar \
    --apk-signing-key-certificate=keycert.txt

নিচের সারণীটি বিভিন্ন পতাকা এবং বিকল্পগুলি বর্ণনা করে যা আপনি bundletool build-sdk-asar কমান্ড ব্যবহার করার সময় আরও বিস্তারিতভাবে সেট করতে পারেন।

সারণি 5. bundletool build-sdk-asar কমান্ডের বিকল্প

পতাকা বর্ণনা
--apk-signing-key-certificate (প্রয়োজনীয়) SDK APK স্বাক্ষর শংসাপত্রের পথ। আপনি build-sdk-apks কমান্ডে APK সাইন করার জন্য যে কী ব্যবহার করেছেন তার সাথে এটি সংশ্লিষ্ট শংসাপত্র।
--output (প্রয়োজনীয়) পাথ যেখানে আপনি .asar ফাইল তৈরি করতে চান।
--sdk-bundle (প্রয়োজনীয়) SDK বান্ডেলের পথ। এক্সটেনশন থাকতে হবে .asb ​​.
--overwrite সেট করা হলে, এই বিকল্পটি পূর্ববর্তী বিদ্যমান আউটপুটটি ওভাররাইট করে।

রানটাইম-সক্ষম SDK ফর্ম্যাট (পরীক্ষামূলক)

রানটাইম-সক্ষম SDK দুটি অ্যান্ড্রয়েড ফাইল ফর্ম্যাট চালু করে:

  • Android SDK বান্ডেল ( .asb ​​), অ্যাপ স্টোরগুলিতে রানটাইম-সক্ষম SDK প্রকাশ করতে ব্যবহৃত হয়।
  • Android SDK আর্কাইভ ( .asar ), Maven-এ রানটাইম-সক্ষম SDK বিতরণ করতে ব্যবহৃত হয়।

Android SDK বান্ডেল ফর্ম্যাট

একটি SDK বান্ডেল হল রানটাইম-সক্ষম SDK-এর জন্য একটি প্রকাশনার ফর্ম্যাট। এটিতে সমস্ত SDK কোড এবং সংস্থান রয়েছে, যার উপর SDK নির্ভর করে এমন যেকোন লাইব্রেরির কোড সহ। এটি অন্যান্য রানটাইম-সক্ষম SDK-এর কোড এবং সংস্থানগুলিকে অন্তর্ভুক্ত করে না যার উপর SDK নির্ভর করে৷

একটি অ্যান্ড্রয়েড SDK বান্ডেল (ASB) হল .asb ​​এক্সটেনশন সহ একটি স্বাক্ষরিত জিপ ফাইল৷ SDK কোড এবং সংস্থানগুলি এটিতে একইভাবে সংগঠিত হয় যা আপনি একটি APK-এ পাবেন৷ একটি ASB-এ বেশ কয়েকটি কনফিগারেশন ফাইলও রয়েছে যা ইনস্টলযোগ্য APK তৈরি করতে সাহায্য করে।

চিত্র 1. একটি Android SDK বান্ডেলের বিষয়বস্তু।

নিম্নলিখিত তালিকাটি আরও বিশদে কিছু ASB ফাইল বর্ণনা করে:

  • SdkBundleConfig.pb : প্রোটো ফরম্যাটে একটি কনফিগারেশন ফাইল, যাতে রানটাইম-সক্ষম SDK-এর তালিকা থাকে যার উপর আপনার SDK নির্ভর করে। সম্পূর্ণ সংজ্ঞার জন্য, sdk_bundle_config.proto ফাইলটি দেখুন।

  • modules.resm : একটি জিপ ফাইল যাতে SDK থেকে APK গুলি তৈরি করার জন্য প্রয়োজনীয় সমস্ত ডেটা রয়েছে৷

  • SdkModulesConfig.pb : প্রোটো ফরম্যাটে একটি কনফিগারেশন ফাইল। এই ফাইলটিতে ফ্রেমওয়ার্কের জন্য SDK এন্ট্রি পয়েন্টের SDK নাম, সংস্করণ এবং শ্রেণীর নাম রয়েছে ( SandboxedSdkProvider )৷ সম্পূর্ণ সংজ্ঞার জন্য, sdk_modules_config.proto ফাইলটি দেখুন।

  • base/ : SDK কোড এবং সংস্থান ধারণকারী একক মডিউল।

    • manifest/ : প্রোটো ফরম্যাটে SDK-এর ম্যানিফেস্ট।
    • dex/ : DEX ফরম্যাটে সংকলিত কোড। একাধিক DEX ফাইল প্রদান করা যেতে পারে.
    • res/ , lib/ , assets/ : এই ডিরেক্টরিগুলি একটি সাধারণ APK-এর সাথে অভিন্ন৷ SDK-এর APK তৈরি করার সময় এই ডিরেক্টরিগুলির পাথগুলি সংরক্ষণ করা হয়৷
    • root/ : এই ডিরেক্টরিটি ফাইলগুলিকে সঞ্চয় করে যেগুলি পরে SDK APKগুলির রুটে স্থানান্তরিত হয়৷ উদাহরণস্বরূপ, এতে জাভা-ভিত্তিক সংস্থান অন্তর্ভুক্ত থাকতে পারে যা আপনার SDK Class.getResource() পদ্ধতি ব্যবহার করে লোড করে। এই ডিরেক্টরির মধ্যে পাথগুলিও সংরক্ষিত আছে।
  • BUNDLE-METADATA : এই ডিরেক্টরিতে এমন মেটাডেটা ফাইল রয়েছে যা টুল বা অ্যাপ স্টোরের জন্য দরকারী তথ্য ধারণ করে। এই ধরনের মেটাডেটা ফাইলগুলিতে প্রোগার্ড ম্যাপিং এবং আপনার SDK-এর DEX ফাইলগুলির সম্পূর্ণ তালিকা অন্তর্ভুক্ত থাকতে পারে। এই ডিরেক্টরির ফাইলগুলি আপনার SDK-এর APKগুলিতে প্যাকেজ করা হয় না৷

Android SDK আর্কাইভ ফর্ম্যাট

একটি Android SDK আর্কাইভ হল Maven-এ রানটাইম-সক্ষম SDK-এর বিতরণ বিন্যাস। এটি একটি জিপ ফাইল যার ফাইল এক্সটেনশন .asar । ফাইলটিতে আপনার রানটাইম-সক্ষম SDK-এর উপর নির্ভর করে একটি Android অ্যাপ বান্ডেল তৈরি করতে অ্যাপ বিল্ড টুলের প্রয়োজনীয় সমস্ত তথ্য রয়েছে।

চিত্র 2। একটি Android SDK আর্কাইভ বান্ডেলের বিষয়বস্তু।

নিম্নলিখিত তালিকাটি আরও বিশদে কিছু Android SDK আর্কাইভ ফাইল বর্ণনা করে:

  • SdkMetadata.pb : প্রোটো ফরম্যাটে একটি কনফিগারেশন ফাইল যাতে SDK নাম, সংস্করণ এবং এই SDK-এর জন্য জেনারেট করা APKগুলিতে স্বাক্ষর করতে ব্যবহৃত কীটির জন্য সার্টিফিকেট ডাইজেস্ট থাকে। সম্পূর্ণ সংজ্ঞার জন্য, sdk_metadata.proto ফাইলটি দেখুন।

  • modules.resm : একটি জিপ ফাইল যাতে SDK থেকে APK গুলি তৈরি করার জন্য প্রয়োজনীয় সমস্ত ডেটা রয়েছে৷ এটি Android SDK বান্ডেলের .resm ফাইলের মতোই।

  • AndroidManifest.xml : টেক্সট XML ফর্ম্যাটে SDK-এর ম্যানিফেস্ট ফাইল।

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

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