AAB (Android App Bundle) হল Android অ্যাপ্লিকেশনের জন্য একটি প্রকাশনা বিন্যাস যা 2021 সালে Google Play-তে APK-কে প্রতিস্থাপন করেছে। APK-এর বিপরীতে, AAB একটি ইনস্টলেশন ফাইল নয় — এটি একটি কন্টেইনার যা থেকে Google Play প্রতিটি ডিভাইসের জন্য গতিশীলভাবে অপ্টিমাইজড APK জেনারেট করে। Android Developers, 2026 অনুসারে, এই বিন্যাসটি অব্যবহৃত রিসোর্স বাদ দিয়ে ডাউনলোড করা অ্যাপ্লিকেশনের আকার গড়ে 15% হ্রাস করে।
মূল বিষয়
AAB (Android App Bundle) হল একটি প্রকাশনা বিন্যাস যা Google Google Play-এর মাধ্যমে বিতরণের জন্য APK-এর বিকল্প হিসেবে তৈরি করেছে। AAB-এর ভিতরে .aab এক্সটেনশন সহ একটি ZIP আর্কাইভ থাকে যাতে কম্পাইল করা কোড, রিসোর্স এবং মেটাডেটা থাকে। মূল পার্থক্য: AAB সরাসরি ডিভাইসে ইনস্টল হয় না।
ডেভেলপার AAB Google Play Console-এ আপলোড করে। যখন একজন ব্যবহারকারী অ্যাপ্লিকেশন ইনস্টল করার চেষ্টা করেন, Google Play ডিভাইস কনফিগারেশন বিশ্লেষণ করে: স্ক্রিন ঘনত্ব (DPI), CPU আর্কিটেকচার, ভাষা এবং Android সংস্করণ। এই বিশ্লেষণের ভিত্তিতে, শুধুমাত্র প্রয়োজনীয় উপাদান সম্বলিত একটি ন্যূনতম APK জেনারেট করা হয়।
Google 2018 সালে I/O কনফারেন্সে AAB উপস্থাপন করে। আগস্ট 2021 থেকে, Google Play-তে সমস্ত নতুন অ্যাপ্লিকেশনের জন্য এই বিন্যাসটি বাধ্যতামূলক হয়েছে। বিদ্যমান অ্যাপ্লিকেশনগুলি APK ব্যবহার চালিয়ে যেতে পারে, তবে নতুনগুলি শুধুমাত্র AAB-তে প্রকাশ করতে হবে।
AAB এবং APK-র মধ্যে পার্থক্য মৌলিক: APK একটি সম্পূর্ণ ইনস্টলেশন ফাইল যা ইনস্টল করার জন্য প্রস্তুত। AAB হল উৎস উপাদান সম্বলিত একটি কন্টেইনার যার প্রক্রিয়াকরণ প্রয়োজন।
| প্যারামিটার | APK | AAB |
|---|---|---|
| ধরন | ইনস্টলেশন ফাইল | প্রকাশনা কন্টেইনার |
| ইনস্টলেশন | সরাসরি ডিভাইসে | Google Play-এর মাধ্যমে |
| আকার | সম্পূর্ণ আর্কাইভ | উৎস উপাদান |
| মডিউল | সব একটি ফাইলে | পৃথক মডিউল |
| স্বাক্ষর | ডেভেলপার | Google Play |
| বিতরণ | যেকোনো চ্যানেল | Google Play |
APK Google Play-এর বাইরে বিতরণের জন্য উপযুক্ত — ওয়েবসাইট, ইমেল বা কর্পোরেট MDM সিস্টেমের মাধ্যমে। AAB Google Play-এর পরিকাঠামোর সাথে আবদ্ধ এবং সরাসরি ইনস্টল করা যায় না। AAB পরীক্ষার জন্য bundletool টুল ব্যবহার করা হয়, যা স্থানীয় মেশিনে APK জেনারেশন অনুকরণ করে।
AAB-এর অভ্যন্তরীণ কাঠামো APK-এর মতো তবে মডিউল এবং তাদের নির্ভরতা বর্ণনা করার জন্য অতিরিক্ত ডিরেক্টরি এবং ফাইল রয়েছে।
| ফাইল/ডিরেক্টরি | উদ্দেশ্য |
|---|---|
| base/ | বেস মডিউল: কোড, রিসোর্স, ম্যানিফেস্ট |
| BundleConfig.pb | protobuf বিন্যাসে বান্ডেল কনফিগারেশন |
| Bundle-metadata/ | মডিউল সংস্করণ সম্পর্কে মেটাডেটা |
| feature/ | গতিশীল মডিউল (অন-ডিমান্ড) |
| assets/ | অ্যাপ্লিকেশন অ্যাসেট |
| manifest/ | প্রতিটি মডিউলের ম্যানিফেস্ট |
base মডিউল AAB-এর একটি বাধ্যতামূলক উপাদান। এতে প্রধান কোড, রিসোর্স এবং অ্যাপ্লিকেশন ম্যানিফেস্ট থাকে। base মডিউল ছাড়া অ্যাপ্লিকেশন বিল্ড করা যায় না। অন্যান্য সমস্ত মডিউল ঐচ্ছিক এবং Dynamic Delivery-এর মাধ্যমে সংযুক্ত হয়।
AAB কনফিগারেশন XML-এর পরিবর্তে Protocol Buffers (protobuf) ব্যবহার করে। .pb ফাইলগুলি আরও কম্প্যাক্ট এবং Google-এর সার্ভার পরিকাঠামো দ্বারা দ্রুত পার্স করা হয়। bundletool টুল ডিবাগিংয়ের জন্য protobuf-কে পঠনযোগ্য বিন্যাসে রূপান্তর করে।
Dynamic Delivery হল মূল প্রযুক্তি যার উপর AAB ভিত্তি করে। এটি ব্যবহারকারীকে শুধুমাত্র অ্যাপ্লিকেশনের সেই অংশগুলি সরবরাহ করার অনুমতি দেয় যা তাদের ডিভাইস এবং ভাষার সাথে মেলে, পাশাপাশি প্রয়োজন অনুসারে অতিরিক্ত মডিউল লোড করার অনুমতি দেয়।
Install-time মডিউলগুলি ইনস্টলেশনের সময় বেস APK-এর সাথে লোড হয়। Conditional মডিউলগুলি শুধুমাত্র শর্ত পূরণ হলে সরবরাহ করা হয় — উদাহরণস্বরূপ, 4K স্ক্রিনের জন্য উপকরণ সম্বলিত মডিউল। On-demand মডিউলগুলি অ্যাপ্লিকেশনের মধ্যে ব্যবহারকারীর অনুরোধে লোড হয়।
বড় রিসোর্স (2 GB পর্যন্ত) এর জন্য OBB ফাইলের পরিবর্তে Play Asset Delivery ব্যবহার করা হয়। PAD একই তিনটি ডেলিভারি মোড সমর্থন করে: install-time, fast-follow (ইনস্টলেশনের সাথে সাথেই) এবং on-demand।
// SplitInstallManager-এর মাধ্যমে অন-ডিমান্ড মডিউল লোড করা হচ্ছে
val manager = SplitInstallManagerFactory
.create(context)
val request = SplitInstallRequest
.newBuilder()
.addModule("level_pack_3")
.build()
manager.startInstall(request)
.addOnSuccessListener {
Log.d("AAB", "Module installed")
}
প্রতিটি গতিশীল মডিউল ডেলিভারি টাইপ উল্লেখ করে একটি পৃথক build.gradle ফাইলে বর্ণনা করা হয়। একটি মডিউলে বেস অ্যাপ্লিকেশন থেকে স্বাধীন নিজস্ব রিসোর্স, কোড এবং ম্যানিফেস্ট থাকতে পারে।
AAB-এর বিল্ড Android Gradle Plugin-এর মাধ্যমে bundleRelease (বা bundleDebug) টাস্ক দিয়ে করা হয়। ফলাফল build/outputs/bundle/ ডিরেক্টরিতে .aab ফাইল হয়।
AAB বিল্ড করার জন্য কোনো বিশেষ কনফিগারেশনের প্রয়োজন নেই — Android Gradle Plugin ডিফল্টভাবে বান্ডেল সমর্থন করে। কেবল assemble-এর পরিবর্তে bundle টাস্ক নির্দিষ্ট করুন।
// build.gradle.kts — স্বাক্ষর সহ AAB বিল্ড করা
android {
bundle {
language {
enableSplit = true
}
density {
enableSplit = true
}
abi {
enableSplit = true
}
}
}
// কাজ: ./gradlew bundleRelease
Google স্থানীয় মেশিনে AAB থেকে APK জেনারেট করার জন্য bundletool টুল প্রদান করে। কমান্ড `bundletool build-apks --bundle=app.aab --output=app.apks` বিভিন্ন ডিভাইস কনফিগারেশনে পরীক্ষার জন্য APK-এর একটি সেট তৈরি করে।
bundletool AAB আনপ্যাক করতে পারে, এর কনফিগারেশন প্রদর্শন করতে পারে এবং Google Play Console-এ আপলোডের আগে স্বাক্ষর অখণ্ডতা যাচাই করতে পারে। ডিবাগিংয়ের জন্য, কমান্ড `bundletool dump manifest --bundle=app.aab` ব্যবহার করা হয় যা বেস মডিউলের ম্যানিফেস্ট দেখায়।
ডিফল্টভাবে, AAB রিসোর্স তিনটি মাত্রায় বিভক্ত করে: ভাষা, স্ক্রিন ঘনত্ব (density) এবং CPU আর্কিটেকচার (abi)। ডেভেলপার build.gradle-এ যেকোনো বিভাজন নিষ্ক্রিয় করতে পারে — উদাহরণস্বরূপ, যদি অ্যাপ্লিকেশন শুধুমাত্র ইংরেজি সমর্থন করে। কোনো বিভাজন নিষ্ক্রিয় করার অর্থ হল সমস্ত ভেরিয়েন্টের রিসোর্স বেস APK-তে অন্তর্ভুক্ত হবে।
রিসোর্স অপ্টিমাইজেশন — AAB স্বয়ংক্রিয়ভাবে PNG-কে গুণমান হ্রাস ছাড়াই WebP-তে রূপান্তর করে, অব্যবহৃত রিসোর্স সংকুচিত করে এবং ডুপ্লিকেট স্ট্রিং সরিয়ে দেয়। এই অপ্টিমাইজেশনগুলি চূড়ান্ত APK জেনারেট করার সময় Google Play-এর পক্ষ থেকে প্রয়োগ করা হয়। ফলস্বরূপ, ব্যবহারকারী সম্পূর্ণ আর্কাইভের চেয়ে 15–25% ছোট APK পায়।
Google Play Console-এ AAB প্রকাশের প্রক্রিয়া শুধুমাত্র আপলোড করা ফাইলের বিন্যাসে APK থেকে ভিন্ন। কনসোল .aab গ্রহণ করে, এর কাঠামো, স্বাক্ষর এবং মডিউল কনফিগারেশন পরীক্ষা করে, তারপর প্রতিটি ডিভাইস প্রকারের জন্য APK জেনারেট করে।
AAB আপলোড করার সময়, Google Play স্বাক্ষর কী ব্যবস্থাপনা নিজের হাতে নেয়। ডেভেলপার upload কী দিয়ে স্বাক্ষরিত প্যাকেজ আপলোড করে, এবং Google জেনারেট করা APK-কে নিজের কী দিয়ে পুনরায় স্বাক্ষর করে। এটি কী রোটেশন এবং keystore হারিয়ে গেলে অ্যাক্সেস পুনরুদ্ধারকে সহজ করে।
Google Play Console অন্তর্নির্মিত AAB পরীক্ষা প্রদান করে: আপনি একটি নির্দিষ্ট ডিভাইসের জন্য জেনারেট করা APK ডাউনলোড করতে পারেন বা Internal Testing, Closed Alpha এবং Open Beta ট্র্যাকের মাধ্যমে অভ্যন্তরীণ পরীক্ষা চালাতে পারেন।
AAB-তে স্থানান্তর সমস্যা সৃষ্টি করতে পারে, বিশেষ করে অনেক গতিশীল মডিউল বা জটিল রিসোর্স কনফিগারেশনযুক্ত প্রকল্পে।
যদি কোনো গতিশীল মডিউল ভুল নামে বেস মডিউল রিসোর্স উল্লেখ করে, Google Play যাচাইকরণ পর্যায়ে AAB প্রত্যাখ্যান করে। সমাধান — বিল্ডের আগে lint পরীক্ষা ব্যবহার করুন এবং স্থানীয়ভাবে bundletool-এর মাধ্যমে সমস্ত মডিউল পরীক্ষা করুন।
ভাষা অনুযায়ী বিভাজন অ্যাপ্লিকেশন স্টার্টআপ ধীর করতে পারে যদি বর্তমান লোকেলের রিসোর্স গতিশীলভাবে লোড হয়। Google-এর সুপারিশ হল 10টির কম ভাষা থাকলে বিভাজন না করা, বা সবচেয়ে জনপ্রিয় ভাষার জন্য install-time ব্যবহার করা।
কিছু SDK (অ্যানালিটিক্স, বিজ্ঞাপন, ম্যাপ) সম্পূর্ণ ম্যানিফেস্ট এবং রিসোর্সে অ্যাক্সেস প্রয়োজন। স্থানান্তরের আগে AAB সামঞ্জস্য পরীক্ষা একটি বাধ্যতামূলক পদক্ষেপ। বেশিরভাগ প্রধান SDK (Firebase, Google Ads, Crashlytics) 2022 থেকে AAB সম্পূর্ণরূপে সমর্থন করে। সামঞ্জস্য যাচাইয়ের জন্য --validate ফ্ল্যাগ সহ bundletool ব্যবহার করা হয়, যা সার্ভার-সাইড APK জেনারেশন অনুকরণ করে।
AAB বেস মডিউল ম্যানিফেস্ট থেকে versionCode ব্যবহার করে। APK-এর বিপরীতে, AAB প্রতিটি মডিউলের জন্য আলাদাভাবে versionCode সমর্থন করে — এটি সম্পূর্ণ পুনরায় ইনস্টল না করেই অ্যাপ্লিকেশনের পৃথক অংশ আপডেট করার অনুমতি দেয়। Dynamic Delivery ইনস্টল করা মডিউল ট্র্যাক করে এবং Google Play-এর মাধ্যমে আপডেটের সময় শুধুমাত্র পরিবর্তিত উপাদান সরবরাহ করে।
Google Play Console প্রতিটি AAB-এর জন্য বিস্তারিত অ্যানালিটিক্স প্রদান করে: কতগুলি APK জেনারেট করা হয়েছে, কোন স্প্লিটের চাহিদা ছিল, প্রতি ডিভাইসে গড় ডাউনলোড আকার কত। Android Vitals জেনারেট করা APK-এর কর্মক্ষমতা মেট্রিক্স দেখায়। এই ডেটা স্প্লিট কনফিগারেশন অপ্টিমাইজ করতে এবং বিভিন্ন ডিভাইস বিভাগের জন্য ডাউনলোড আকার কমাতে সহায়তা করে।
সচরাচর জিজ্ঞাসা
না, AAB সরাসরি ইনস্টলেশনের জন্য নয়। Google Play এটি একটি নির্দিষ্ট ডিভাইসের জন্য APK-তে রূপান্তর করে। ফোনে পরীক্ষার জন্য bundletool ব্যবহার করা হয়, যা স্থানীয়ভাবে AAB থেকে APK জেনারেট করে।
Google Play শুধুমাত্র ব্যবহারকারীর ডিভাইসের সাথে মেলানো রিসোর্স সহ APK জেনারেট করে: একটি স্ক্রিন ঘনত্ব, একটি CPU আর্কিটেকচার, একটি ভাষা। অন্যান্য কনফিগারেশনের রিসোর্স অন্তর্ভুক্ত করা হয় না, যা ডাউনলোড ট্রাফিকে 15–30% সাশ্রয় করে।
না, বিদ্যমান অ্যাপ্লিকেশনগুলি APK প্রকাশ চালিয়ে যেতে পারে। AAB প্রয়োজনীয়তা শুধুমাত্র নতুন অ্যাপ্লিকেশনের ক্ষেত্রে প্রযোজ্য। Google বিদ্যমান প্রকল্পগুলি AAB-তে আপডেট করার সুপারিশ করে কিন্তু প্রয়োজন হয় না।
বিল্ড টাস্ক assembleRelease থেকে bundleRelease-এ পরিবর্তন করুন, সমস্ত SDK-এর সামঞ্জস্য পরীক্ষা করুন, Google Play Console-এ App Signing কনফিগার করুন এবং বিদ্যমান ট্র্যাকের মাধ্যমে প্রথম AAB আপলোড করুন।
হ্যাঁ, AAB মডিউলে নেটিভ লাইব্রেরি অন্তর্ভুক্ত করে। Google Play ডিভাইসের CPU আর্কিটেকচারের জন্য শুধুমাত্র .so ফাইল সরবরাহ করে। এটি বিশেষ করে Unity এবং Unreal Engine-এ বড় নেটিভ বিল্ড সহ গেমের জন্য গুরুত্বপূর্ণ।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন