هنگام توسعه اپلیکیشنهای اندروید، ارائه آنها به کاربران در قالب مناسب از نظر عملکرد، کارایی ذخیرهسازی و تجربه کاربری بسیار مهم است. برای مدت طولانی، APK (Android Package) فرمت استاندارد برای توزیع اپلیکیشنهای اندروید بود. اما گوگل در سال ۲۰۱۸ AAB (Android App Bundle) را معرفی کرد تا فرآیند تحویل اپلیکیشنها را بهینه کند و عملکرد بهتری ارائه دهد.
در این پست، تفاوتهای بین APK و AAB، مزایا و معایب هرکدام را بررسی میکنیم .
APK (Android Package) چیست؟
APK فرمت سنتی بستهبندی اپلیکیشنهای اندروید است. این فرمت شامل تمام منابع، کدها و داراییهایی است که برای نصب و اجرای اپلیکیشن روی یک دستگاه نیاز است. زمانی که یک APK ایجاد میکنید، یک فایل تکی خواهید داشت که همهچیز را شامل میشود، بدون توجه به نوع دستگاه یا تنظیمات آن.
اجزای یک APK:
فایل Manifest: اطلاعات مربوط به اپلیکیشن، شامل مجوزها (Permissions).
فایلهای DEX: کدهای کامپایل شده جاوا/کاتلین.
منابع (Resources): تصاویر، طرحبندیها (Layouts) و سایر داراییها.
کتابخانههای بومی (Native Libraries): فایلهای باینری مخصوص دستگاه مانند ARM، x86 و غیره.
نحوه کار APK
زمانی که یک APK نصب میشود، کل فایل بهطور کامل دانلود و روی دستگاه کاربر نصب میشود، حتی اگر برخی از بخشها (مانند داراییهایی که برای اندازههای صفحهنمایش پشتیبانینشده هستند) موردنیاز نباشند.
AAB (Android App Bundle) چیست؟
AAB یک فرمت جدیدتر است که توسط گوگل معرفی شده است. به جای بستهبندی همه منابع در یک فایل واحد، AAB آنها را به ماژولهای متعددی سازماندهی میکند. این ماژولها به گوگل پلی اجازه میدهند که فقط بخشهایی از اپلیکیشن را که برای یک دستگاه خاص موردنیاز هستند، ارائه دهد. این رویکرد باعث کاهش حجم اپلیکیشن برای کاربران نهایی میشود.
نحوه کار AAB
ساخت توسط توسعهدهنده: توسعهدهندگان اپلیکیشن خود را به صورت یک فایل AAB ایجاد میکنند.
پردازش توسط گوگل پلی: گوگل پلی فایل AAB را پردازش کرده و یک سیستم تحویل پویا (Dynamic Delivery) ایجاد میکند.
تولید و ارائه APK بهینهشده: زمانی که یک کاربر اپلیکیشن را دانلود میکند، گوگل پلی یک APK بهینهشده (که به آن Split APK گفته میشود) تولید و ارائه میکند. این APK دقیقاً بر اساس تنظیمات دستگاه کاربر (مانند تراکم صفحهنمایش، معماری CPU و زبان) سفارشیسازی شده است.
تفاوت های کلیدی بین APK و AAB
ویژگیهای APK:
حجم فایل: شامل تمام منابع است و حجم بیشتری دارد.
تحویل: یک فایل واحد برای همه دستگاهها.
نصب: میتوان آن را بهصورت مستقیم Sideload کرد.
مدیریت کد: شامل تمام کدها و منابع است.
سهولت دیباگ: به دلیل بستهبندی یکپارچه، دیباگ آسانتر است.
ویژگیهای AAB:
حجم فایل: APKهای بهینهشده تولید میکند و حجم را کاهش میدهد.
تحویل: Split APKها بر اساس تنظیمات دستگاه تولید میشوند.
نصب: برای تحویل بهینه به گوگل پلی نیاز دارد.
مدیریت کد: ماژولار شده برای تحویل پویا.
سهولت دیباگ: نیاز به مراحل اضافی برای دیباگ دارد.
مزایای APK:
قابلیت Sideloading: فایلهای APK میتوانند مستقیماً به اشتراک گذاشته شده و بدون استفاده از گوگل پلی نصب شوند. این ویژگی برای تست یا توزیع اپلیکیشنها خارج از پلی استور بسیار مفید است.
فایل تکی: همه چیز در یک فایل بستهبندی شده است که فرآیند توزیع و تست را سادهتر میکند.
پشتیبانی گسترده: فایلهای APK توسط تمام دستگاههای اندروید و فروشگاههای اپلیکیشن پشتیبانی میشوند.
مزایای AAB:
کاهش حجم اپلیکیشن: AAB با حذف منابع غیرضروری، اپلیکیشنها را بهینه کرده و حجم دانلود و نصب را کاهش میدهد.
عملکرد بهتر: با حذف منابع غیرضروری، اپلیکیشن سریعتر بارگذاری شده و حافظه کمتری مصرف میکند.
ویژگیهای پویا (Dynamic Features): AAB از تحویل پویا پشتیبانی میکند و به کاربران اجازه میدهد فقط بخشهایی از اپلیکیشن را که نیاز دارند، دانلود کنند. به عنوان مثال:دانلود بستههای زبانی خاص. نصب ویژگیهای خاص فقط زمانی که موردنیاز باشند.
آیندهنگر: AAB فرمت مورد ترجیح گوگل است و از آگوست ۲۰۲۱ برای اپلیکیشنهای پلی استور اجباری شده است.
چالشهای AAB:
عدم امکان نصب مستقیم (Sideloading): فایلهای AAB نمیتوانند مانند APK مستقیماً نصب شوند. برای نصب نیاز به تولید APK خاص از طریق ابزارهایی مانند bundletool دارید.
وابستگی به گوگل پلی: AAB برای ارائه APKهای بهینه به گوگل پلی وابسته است که میتواند برای اپلیکیشنهایی که خارج از پلی استور توزیع میشوند، یک محدودیت باشد.
پیچیدگی بیشتر: دیباگ و تست فایلهای AAB نسبت به APK به ابزارها و مراحل اضافی نیاز دارد.
چه زمانی از APK یا AAB استفاده کنیم؟
موارد استفاده از APK:
توزیع اپلیکیشنها خارج از گوگل پلی.
تست یا دیباگ محلی.
اشتراکگذاری اپلیکیشنها با پیکربندیهای محدود.
موارد استفاده از AAB:
انتشار اپلیکیشنها در گوگل پلی.
بهینهسازی تحویل اپلیکیشن برای کاربران.
پشتیبانی از طیف گستردهای از دستگاهها و پیکربندیها.
نتیجه گیری:
هر دو فرمت APK و AAB مزایا و محدودیتهای خاص خود را دارند. در حالی که APK همچنان برای اشتراکگذاری مستقیم و تست مفید است، AAB به دلیل بهینهسازیهای حجمی و عملکردی، به فرمت اصلی گوگل پلی تبدیل شده است. درک زمان و نحوه استفاده از هر فرمت برای توسعهدهندگان اندروید ضروری است تا تحویل اپلیکیشنها کارآمدتر و تجربه کاربری روانتری فراهم شود.
ممنون که تا آخر این پست همراه من بودید ، امیدوارم براتون مفید بوده باشه 🙌🙏✌ (:
بقیه آموزش های من با نام (mister developer) را می توانید در تلگرام و اینستاگرام دنبال کنید!!