نگاهی به مفهوم  APP Bundle در اندروید

قبل از اینکه به مفهوم App Bundle بپردازیم باید با Apk split اشنا شویمsplit APKیک component پایه در خدمت به بهینه سازی applications است که در Android 5.0 (API سطح 21) و بالاتر موجود است. APK Split ها بسیار شبیه APK های معمولی هستند - این برنامه ها شامل کد بایت کامپایل شده کد DEX ، ریسورس ها و مانیفست Android هستند. ، سیستم عامل Android قادر است چندین split APKs نصب شده را به عنوان یک برنامه واحد (در نظر بگیرد) درمان کند. یعنی شما می توانید چندین APK تقسیم شده نصب کنید که به کد و منابع مشترک دسترسی دارند و به عنوان یک برنامه نصب شده روی دستگاه ظاهر می شوند.مزیت APK های تقسیم شده توانایی تجزیه یک APK یکپارچه است - یعنی APK ای که شامل کد و منابع برای همه ویژگی ها و پیکربندی ها که برنامه شما پشتیبانی میکند - به پکیجهای مجزا کوچکتر که در صورت لزوم بر روی دستگاه کاربر نصب می شوند تبدیل میشوند.به عنوان مثال ، یک split APKs شده ممکن است شامل کد و منابع یک ویژگی اضافی باشد که فقط تعداد کمی از کاربران شما به آن نیاز دارند ، در حالی که split APKs دیگری منابعی فقط برای یک زبان خاص یا تراکم صفحه دارد. هر کدام از این split APKs ها درصورت درخواست کاربر یا نیاز به دستگاه ، بارگیری و نصب می شوندموارد زیر انواع مختلف APK را توصیف می کند که ممکن است با هم روی دستگاه نصب شوند تا تجربه کامل برنامه شما را تشکیل دهند. Base APK + Configuration APKs + Feature module APKsبرنامه ای با سه ماژول Feature و پشتیبانی از Configuration مختلف دستگاه را در نظر بگیرید. شکل زیر نشان می دهد که درخت وابستگی برای APK های مختلف برنامه چگونه است. توجه داشته باشید که APK پایه سر درخت را تشکیل می دهد و سایر APK ها به APK پایه بستگی دارند. (اگر درباره نحوه نمایش ماژول های این APK ها در یک بسته نرم افزاری Android کنجکاو هستید ، به قالب Android App Bundle مراجعه کنید.). Dependency tree for an app served using split APKsبخاطر داشته باشید ، نیازی نیست که این APK ها را خودتان بسازید - Google Play این کار را با استفاده از یکapp bundle امضا شده با Android Studio برای شما انجام می دهد. برای کسب اطلاعات بیشتر در مورد قالب بسته نرم افزار برنامه و نحوه ساخت آن ، به ساخت ، استقرار و بارگذاری بسته های برنامه Android برویدhttps://developer.android.com/studio/runاز آنجا که دستگاه های دارای Android 4.4 (سطح API 19) و پایین تر از بارگیری و نصب APK های تقسیم شده پشتیبانی نمی کنند ، در عوض Google Play به آن دستگاه ها یک APK واحد ، به نام multi-APK ارائه می دهد که برای پیکربندی دستگاه بهینه شده است. به این معنی که multi-APK نمایانگر تجربه کامل برنامه شما هستند اما کد و منابع غیرضروری را شامل نمی شوند - مانند منابع مربوط به سایر تراکم صفحه و ساختارهای CPU.با این حال ، آنها شامل منابع برای همه زبانهایی هستند که برنامه شما پشتیبانی می کند. برای مثال ، به کاربران امکان می دهد بدون نیاز به بارگیری multi-APKدیگر ، تنظیمات زبان مورد نظر برنامه شما را تغییر دهند.مالتی apk توانایی بارگیری بعداً ماژول های ویژگی را بر اساس تقاضا ندارند. برای قرار دادن یک ماژول ویژگی در این APK ، شما باید On-demand را غیرفعال کنید یا هنگام ایجاد ماژول ویژگی Fusion را فعال کنید.بخاطر داشته باشید ، با بسته های app bundles ، نیازی به ساخت ، امضا ، بارگذاری و مدیریت APK برای هر پیکربندی دستگاهی که برنامه شما پشتیبانی می کند ، ندارید. شما هنوز فقط یک بسته نرم افزاری خاص برای کل برنامه خود ایجاد و بارگذاری می کنید و بقیه موارد را Google Play از شما مراقبت می کند. بنابراین چه بخواهید از دستگاه های دارای Android نسخه ۴ یا پایین تر پشتیبانی کنید ، گوگل پلی مکانیسم سرویس انعطاف پذیری را هم برای شما و هم برای کاربران فراهم می کند.App Bundleاندروید اپ باندل یک قالب انتشار است که شامل همه کد و منابع کامپایل شده برنامه شما است و ایجاد APK و امضای سیستم Google Play را به تعویق می اندازد.Google Play از App Bundle شما برای تولید و ارائه APK های بهینه شده برای هر دستگاه موبایل با پیکربندی متفاوت استفاده می کند ، بنابراین فقط کد و منابعی که برای دستگاه خاصی لازم است بارگیری می شود تا برنامه شما اجرا شود. برای بهینه سازی پشتیبانی از دستگاه های مختلف ، دیگر نیازی به ساخت ، امضا و مدیریت چندین APK ندارید و کاربران بارگیری های بهینه شده و کوچکتر را دریافت می کنند.اکثر پروژه ها برای ساخت app bundle که از APK های بهینه شده پشتیبانی می کنند به تلاش زیادی احتیاج ندارند. به عنوان مثال ، اگر قبلاً کد و منابع برنامه خود را مطابق با روال متداول سازماندهی کرده اید ، به سادگی با استفاده از Android Studio یا استفاده از خط فرمان ؛ Android App bundle امضا شده را بسازید و در Google Play بارگذاری کنید سرویس APK بهینه شده سپس به یک مزیت خودکار تبدیل می شود.هنگامی که از قالب app bundle برای انتشار برنامه خود استفاده می کنید ، می توانید به صورت اختیاری از Play Feature Delivery نیز استفاده کنید که به شما امکان می دهد ماژول های feature را به پروژه برنامه خود اضافه کنید. این ماژول ها حاوی ویژگی ها و منابعی هستند که می توانید انتخاب کنید که هنگام استفاده و بارگیری و نصب کاربران برای اولین بار ، برنامه شما این موارد را شامل نشود . با استفاده از Play Core Library ، برنامه شما بعداً می تواند بارگیری آن ماژول ها را درخواست کند. Google Play فقط کد و منابع مربوط به آن ماژول را در دستگاه ارائه می دهد.توسعه دهندگان بازی که برنامه های خود را با app bundle منتشر می کنند ، می توانند از Play Asset Delivery استفاده کنند: راه حل Google Play برای ارائه مقادیر زیادی assets بازی که متدهای تحویل انعطاف پذیر و عملکرد بالا را به توسعه دهندگان ارائه می دهد.با Android App Bundles ، محدودیت اندازه بارگیری فشرده (compressed download)اکنون 150 مگابایت است. نمی توانید از app bundle با فایل های توسعه APK obbاستفاده کنید.اگر از Android Studio 3.2 یا بالاتر استفاده می کنید ، می توانید فقط با چند کلیک Android App Bundle ایجاد کنید.انتشار با Android App Bundles به کاربران شما کمک می کند تا برنامه شما را با کمترین سایز دانلود ممکن نصب کنند و محدودیت اندازه بارگیری فشرده را به 150 مگابایت افزایش می دهد. یعنی وقتی کاربر برنامه شما را بارگیری می کند ، اندازه کل APK های فشرده مورد نیاز برای نصب برنامه شما (به عنوان مثال APK های پیکربندی APK + پایه) نباید بیش از 150 مگابایت باشد. هر بارگیری بعدی ، مانند بارگیری یک ماژول FEATURE(و APK های پیکربندی آن) در صورت تقاضا ، باید از این محدودیت اندازه بارگیری فشرده نیز پیروی کند . Asset packs در این محدودیت اندازه مشارکت ندارند ، اما محدودیت های اندازه دیگری دارند.وقتی App Bundle خود را اپلود می کنید ، اگر کنسول Play هر یک از بارگیری های احتمالی برنامه یا ویژگی های درخواستی آن را بیش از 150 مگابایت تشخیص دهد ، با خطا مواجه می شوید.به خاطر داشته باشید ، App Bundle ازفایل های گسترش یا APK (* .obb) پشتیبانی نمی کنند. بنابراین ، اگر هنگام انتشار بسته برنامه خود با این خطا مواجه شدید ، برای کاهش اندازه بارگیری APK فشرده ، از یکی از منابع زیر استفاده کنید:Make sure you enable all configuration APKs by setting enableSplit = true for each type of configuration APK. This makes sure that users download only the code and resources they need to run your app on their device.Make sure you shrink your app by removing unused code and resources.Follow best practices to further reduce app size.Consider converting features that are used by only some of your users into feature modules that your app can download later, on demand. Keep in mind, this may require some refactoring of your app, so make sure to first try the other suggestions described above.نگاه دقیق تر به اپ باندلقالب Android App Bundle فایلی است (با پسوند پرونده .ab) که در Google Play اپلود می کنیدباینری های امضا شده ای هستند که کد برنامه و منابع برنامه شما را در ماژول ها سازماندهی می کنند ، همانطور که در شکل زیر نشان داده شده است. کد و منابع برای هر ماژول مانند آنچه در یک APK می یابید سازمان یافته اند - و این منطقی (مشهود) است زیرا ممکن است هر یک از این ماژول ها به صورت APK جداگانه ایجاد شده باشد. سپس Google Play از App Bundleبرای تولید APK های مختلفی که برای کاربران ارائه می شود استفاده می کند ، مانند APK پایه ، APK ویژگی ، APK پیکربندی و (برای دستگاههایی که از APK تقسیم شده پشتیبانی نمی کنند) چند APK. دایرکتوری هایی که به رنگ آبی رنگ هستند - مانند دایرکتوری های drawable ، values/ و lib / - نشان دهنده کد و منابعی است که Google Play برای ایجاد APK پیکربندی برای هر ماژول استفاده می کندتوجه: این مطلب نهایی نبوده ممکن است در اینده دچار تغییر شودمنبع :https://developer.android.com/guide/app-bundle