AAB فرمتی است که گوگل قصد دارد جایگزین APK برای برنامه های اندروید کند.در این مقاله قصد داریم به طور کامل درباره AAB ، دلایل روی آوردن گوگل به آن و مزایا و معایب این فرمت را بررسی کنیم.ابتدا به مشکلات APK می پردازیم و سپس به سراغ تعریف AAB خواهیم رفت.
اندازه برنامه – مشکل اصلی APK ها
مشکل اصلی APK ها اندازه آنهاست. برای درک این موضوع، ابتدا باید درک کنیم که توسعهدهندگان چگونه اپلیکیشن را توسعه می دهند.
دستگاه های اندرویدی زیادی در بازار وجود دارد. هر کدام دارای اندازه صفحه نمایش، پردازنده، قابلیت های گرافیکی و سایر تغییرات متفاوت هستند.توسعه دهندگان باید این ویژگی های مختلف دستگاه را پیش بینی کنند. شرکت ها به ندرت برنامهای را راهاندازی میکنند تا پیکربندی یک دستگاه را به تنهایی ارائه کند. یک برنامه باید در پیکربندی های مختلف دستگاه پاسخگو باشد.به مثال زیر توجه کنید.
آیا Whatsapp در مقایسه با یک گوشی هوشمند پریمیوم رده بالا در دستگاهی با مشخصات پایین عملکرد ضعیفی دارد؟ تفاوتها در عملکرد عموماً ناچیز است، زیرا توسعهدهندگان برنامه را برای اجرا در دستگاههای Android زیادی میسازند.
این نیاز به ایجاد برنامه برای طیف وسیعی از تنظیمات دستگاه باعث افزایش مستقیم اندازه فایلهای APK میشود. یک فایل APK منفرد حاوی دارایی ها و منابعی برای اجرای یک برنامه در دستگاه های Android بی شمار است. به عبارت دیگر، کاربران باید تمام سورس ها را در حافظه دستگاه خود دانلود کنند، حتی اگر برخی از آنها برای کارکرد برنامه مورد نیاز نباشد.
این نشان دهنده یک ناکارآمدی آشکار در نحوه عملکرد APK ها است. اندازه برنامه های بالا باعث ایجاد طیف وسیعی از مشکلات ازجمله نرخ موفقیت نصب کمتر می شود.
فایل AAB چیست؟
گوگل با برنامه ای برای تغییر تدریجی از APK به AAB، فایل های APK را حذف می کند. اما AAB چیست؟ AAB مخفف Android App bundle است. طبق راهنمای برنامهنویس اندروید، Android App Bundle یک قالب انتشاری است که شامل تمام منابع و کدهای کامپایلشده برای یک برنامه است و تولید APK و امضای آن را به Google Play به تعویق میاندازد. فرمتهای AAB امکان دانلود سفارشی را برای دستگاههایی که درخواست برنامه دارند را میدهد.
یک فایل AAB یک بسته نرم افزاری Android است که توسعه دهندگان از آن برای آپلود برنامه ها در Google Play استفاده می کنند. پس از آپلود، Google Play از فرآیندی به نام تحویل پویا برای ارائه نسخههای بهینه بستههای برنامه (فایلهای APK.) به دستگاههای کاربر استفاده میکند، بنابراین آنها فقط شامل بخشهای خاصی از برنامه هستند که هر دستگاه برای اجرا نیاز دارد. با تحویل پویا، اندازه نصب برنامه را می توان به میزان قابل توجهی در دستگاه های کاربر کاهش داد.
با استفاده از Android App Bundles، Google Play میتواند توزیع APK را برای پیکربندی دستگاه و زبان خاص بهینه کند. به عبارت دیگر، زمانی که کاربر روی دکمه «نصب» در فروشگاه Google Play کلیک میکند، فایل دانلود شده برای دستگاه او ساخته میشود. به عنوان مثال، اگر کاربران انگلیسی را به عنوان یک زبان در دستگاه خود انتخاب کرده باشند، نیازی به بسته زبان آلمانی یا فرانسوی ندارند و بنابراین دانلود نمی شوند. به طور مشابه، اگر دستگاهی که درخواست یک برنامه کاربردی را ارائه میکند، از وضوح 4K پشتیبانی نمیکند، APK دریافت شده توسط دستگاه، بسته منبع 4K را نخواهد داشت.
تفاوت APK و ABB
همانطور که قبلاً ذکر شد، فرمتهای AAB و APK دارای دو تفاوت اصلی به ترتیب در توزیع منابع و تولید کلیدهای امضا هستند. برای درک بهتر آنها، اجازه دهید به عنوان مثال یک برنامه کاربردی را در نظر بگیریم که در منابع بسته، عناصر زیر را شامل می شود:
ویدئو با کیفیت FHD و 4K
زبان ایتالیایی و چینی
بیایید فرض کنیم کاربر نهایی که میخواهد برنامه را دانلود کند، یک گوشی هوشمند دارد که تنها از وضوح FHD پشتیبانی میکند و ایتالیایی را به عنوان زبان پیشفرض تنظیم کرده است. با دانلود یک APK “کلاسیک” کاربر هر چهار منبع ذکر شده در بسته را دریافت می کند، از جمله منابعی که توسط دستگاه او پشتیبانی نمی شود.
با بارگیری برنامهای که در فروشگاه Play با فرمت AAB بارگیری شده است، Google فقط منابع لازم را برمیگرداند و یک بسته APK متناسب با نیازهای هر کاربر که APK تقسیمشده را دارد ایجاد میکند. با بازگشت به مثال خود، دیگر نیازی به افزایش وزن برنامه با محتوای 4K یا فایل های حاوی زبان های آسیایی نخواهد بود.
بدیهی است که در صورتی که کاربر فرضی ما تصمیم به یادگیری زبان چینی بگیرد و آن را به عنوان زبان پیشفرض در دستگاه خود قرار دهد، Google Play با افزودن عملکرد مورد نیاز، بهروزرسانی اپلیکیشن Split APK را بر عهده خواهد گرفت.
دومین تفاوت بزرگ بین AAB و APK مربوط به کلیدهای امضا است که در مورد بسته نرم افزاری Android به طور مستقیم توسط Play Store مدیریت می شوند. کلیدهای امضا برای مقاصد امنیتی هستند و برای تأیید احتمال به خطر افتادن یا دستکاری یک بسته توسط افراد مخرب استفاده می شوند.
بنابراین در مورد AAB، خود گوگل و نه توسعه دهنده، بسته برنامه دانلود شده توسط کاربران را امضا می کند. امنیت این کلیدهای امضا توسط سیستم مدیریت کلید خود گوگل که یک ساختار امن و کاربردی در فضای ابری است تضمین شده است.
چرا گوگل پلی استور به AAB منتقل می شود؟
Google در حال تغییر به AAB است زیرا به این پلتفرم اجازه میدهد راهحلهای سفارشیسازی شده را بر اساس تنظیمات و زبانهای دستگاه به کاربران ارائه دهد. حذف بستههای منابع غیرضروری از یک APK جهانی، حجم دانلود را تا 15 درصد کاهش میدهد و باعث صرفهجویی در پهنای باند زیادی در Google میشود. پس از آن، فایلهایی که حجم کمتری دارند زمان کمتری برای دانلود میبرند و در نتیجه احتمال لغو درخواست دانلود توسط کاربران کاهش مییابد.
AAB همچنین کنترل بیشتری بر خدمات توزیع برنامه به Google ارائه خواهد کرد، زیرا هر فروشگاه شخص ثالثی باید یک مبدل AAB به APK را از طریق ابر راه اندازی کند تا برنامه های خود را در فروشگاه Google Play آماده ارائه کند، در حالی که Google این کار را با کمک ابزاری به نام “bundletool”انجام می دهد. سوال دیگری که ممکن است در این مرحله مطرح شود: “آیا AAB بهتر از APK است؟” اساسا، AAB به پلتفرمهای توزیع برنامه مانند Google Play Store امکان میدهد تا برنامههای سفارشی را برای Android ارائه دهند، که حاوی کدها و فایلهای منبعی که مورد نیاز نیستند نباشند.
چگونه AAB به APK تبدیل می شود؟
هنگامی که توسعهدهندگان شروع به آپلود فایلهای AAB در فروشگاه Google Play میکنند، Google از «bundletool» خود برای تبدیل آن فایلها به فرمت APK و ارسال آن به دستگاهها استفاده میکند. این فایلهای APK حاوی همه فایلهایی نیستند که ممکن است در یک APK جهانی وجود داشته باشند، اما دارای فایلهایی هستند که برای اجرای یک برنامه در یک دستگاه خاص ضروری هستند.
مزایای AAB:
کاهش اندازه برنامه ها
APKهای سرویس را تغییر میدهد و آنها را برای پیکربندیهای مختلف دستگاه بهینه میکند، که منجر به میانگین اندازه برنامههای کوچکتر در حدود 10٪ و 15٪ برای APK جهانی میشود.
کاربران تنها کدهای استفادهشده در برنامه و منابع و الزامات مورد نیاز برای دستگاه خود را دانلود می کنند که با این کار برنامه ها سریع تر دانلود می شوند.
مدیریت بهتر
AAB یک واحد ایجاد می کند که شامل همه کدهای کامپایل شده، منابع و کتابخانه ها برای یک برنامه خاص است. بنابراین، نیاز به ساخت، امضا، آپلود و مدیریت کدهای نسخه برای چندین APK را از بین می برد.
زمان ساخت سریعتر
ABB به اندروید استودیو اجازه میدهد تا سیستمهایی را با استفاده از Gradle بسازد، که برای برنامههای ماژولار بهینهسازی شدهاند، بنابراین ساخت آنها بسیار سریعتر از برنامههای بزرگ است. این باعث می شود زمان انتظار کاهش یابد، بنابراین توسعه دهندگان می توانند زمان بیشتری را برای طراحی، کدنویسی و آزمایش برنامه بگذارند.
تجربه فوری اپلیکیشن
AAB تجربه Google Play Instant را ارائه میدهد و بسته نرم افزاری به عنوان بسته نرم افزاری فعال فوری شناخته میشود. این بسته راهنمای راهاندازی، پیکربندی، ساخت، آزمایش و انتشار برنامه را ارائه میکند.
مشکلات AAB:
توسعه دهندگانی که قصد دارند برنامه های خود را در پلتفرم ها یا فروشگاه های دیگری مانند فروشگاه App Amazon و Huawei AppGallery راه اندازی کنند، باید نسخه APK آن برنامه خاص را به صورت دستی ارسال کنند. با این حال، برای یک توسعه دهنده کار سنگینی نیست.
اگر توسعهدهندهای میخواهد برنامهاش را فقط در Play Store ارسال کند، داشتن AAB انتخاب خوبی است. اما آن دسته از کاربران نهایی که هنوز فایلهای APK را میخواهند، باید به دنبال فروشگاههای جایگزین باشند.
مشکل دوم این است که توسعهدهندگان باید کلید امضای برنامههای خود را در اختیار Google قرار دهند تا فایلهای AAB را بهعنوان APK منتشر کنند. مطمئناً این اقدام به گوگل قدرت دسترسی به هسته برنامه ها را می دهد.