درباره بستههای نرمافزاری اندروید
بسته نرمافزاری اندروید (AAB) چیست؟
بسته نرمافزاری اندروید (AAB) که در سال ۲۰۱۸ عرضه شد، یک قالب انتشار برای اندروید است که توسط گوگل پلی و سایر فروشگاههای نرمافزاری و همچنین توسط ابزارهای ساخت مانند اندروید استودیو، بازل، باک، کوکوس کریتور، گریدل، یونیتی و آنریل پشتیبانی میشود.
تفاوت بین AAB ها و APK ها چیست؟
بستههای نرمافزاری فقط برای انتشار هستند و نمیتوان آنها را روی دستگاههای اندروید نصب کرد. بسته اندروید (APK) فرمت قابل نصب و اجرایی اندروید برای برنامهها است. بستههای نرمافزاری باید توسط یک توزیعکننده به APK تبدیل شوند تا بتوان آنها را روی دستگاهها نصب کرد.
آیا AAB یک فرمت اختصاصی است که فقط در گوگل پلی قابل استفاده است؟
خیر، AAB اختصاصی نیست. بسته نرمافزاری متنباز است، بنابراین هر فروشگاه برنامهای میتواند از آن پشتیبانی کند. بستهها توسط گوگل پلی و برخی فروشگاههای برنامه دیگر پشتیبانی میشوند.
آیا ایجاد AAB مانع از انتشار من در سایر فروشگاههای برنامه میشود؟
خیر، شما از انتشار در سایر اپ استورها منع نشدهاید. وقتی اپلیکیشن خود را میسازید، میتوانید همزمان AAB و APK بسازید، بسته به اینکه چه فرمت انتشاری برای هر اپ استور مورد نیاز است.
برای استفاده از AAB چقدر کار لازم است؟
برای اکثر برنامهها، ساخت AAB معادل تلاش برای ساخت APK است، زیرا صرفاً شامل انتخاب AAB به جای APK در زمان ساخت است. برای برخی از برنامهها، ممکن است تغییراتی لازم باشد تا از مزایای کامل AABها بهرهمند شوید.
آیا توسعهدهندگانی از قبل از AAB استفاده میکنند؟
بله. بیش از ۱ میلیون برنامه و بازی از جمله اکثر برنامههای محبوب، از بستههای برنامه برای انتشار نسخههای تولیدی خود در گوگل پلی استفاده میکنند که نشاندهنده میلیاردها نصب فعال است. اگر از گوگل پلی برای نصب برنامهها استفاده میکنید، بسیاری از برنامههای موجود در دستگاه شما به صورت بستههای برنامه منتشر شدهاند.
آیا AAB مانع از «بارگذاری جانبی» برنامهها توسط کاربران میشود؟
خیر، AABها مانع از نصب APKها از هیچ منبعی توسط کاربران نمیشوند. از آنجایی که AAB فقط یک فرمت انتشار است، نحوه عملکرد پلتفرم اندروید را تغییر نمیدهند.
اگر یک توسعهدهنده از AABها برای ارائه APKهای بهینهشده استفاده کند، آیا این به این معنی است که ممکن است کاربرانی که آن APKها را به اشتراک میگذارند با مشکل مواجه شوند؟
همیشه موارد نادری در اندروید وجود داشته است که فایلهای APK نمیتوانند مستقیماً از یک دستگاه به دستگاه دیگر منتقل شوند، صرف نظر از اینکه برنامه از طریق APK یا AAB منتشر شده باشد. به طور خاص، هنگامی که APKها برای یک دستگاه بهینه شدهاند (به عنوان مثال، برای یک معماری تراشه خاص)، انتقال مستقیم آن APKها به دستگاه دیگر ممکن است در صورتی که دستگاه هدف با ویژگیهای دستگاه اصلی مطابقت نداشته باشد، با مشکلاتی مواجه شود. در این شرایط، یک APK یا مجموعهای از APKها که برای دستگاه هدف مناسب هستند، باید نصب شوند.
آیا میتوانم در چندین فروشگاه اپلیکیشن منتشر کنم؟
بله، چه از AAB استفاده کنید و چه نکنید، میتوانید برنامهها را در چندین فروشگاه اپلیکیشن منتشر کنید. میتوانید AABها را در گوگل پلی و سایر فروشگاههای اپلیکیشن که از AAB پشتیبانی میکنند، همزمان با انتشار APKها در سایر فروشگاههای اپلیکیشن یا وبسایتهایی که از AAB پشتیبانی نمیکنند، منتشر کنید.
آیا الزام AAB برای برنامههای خصوصی منتشر شده در Google Play مدیریت شده اعمال میشود؟
بله، برنامههای خصوصی که از طریق کنسول Play در Google Play مدیریتشده منتشر میشوند، ملزم به انتشار AABها هستند.
انتشار APKها هنوز از طریق Managed Play iframe پشتیبانی میشود.
درباره امضای برنامه Play
امضای برنامه Play چیست؟
هر APK در اندروید برای اینکه قابل نصب باشد، باید به صورت رمزنگاری شده با یک کلید امضای برنامه امضا شود. پلتفرم اندروید از این کلید استفاده میکند تا اطمینان حاصل شود که هرگونه بهروزرسانی برنامه با برنامه نصب شده روی دستگاه مطابقت دارد، به طوری که پس از نصب اولیه، هر بهروزرسانی برنامه از همان دارنده کلید میآید. این امر خطر بهروزرسانیهای مخرب برنامهها را کاهش میدهد. سرویس امضای برنامه Play که در سال ۲۰۱۷ راهاندازی شد، سرویس مدیریت کلید گوگل پلی است که کلیدهای امضای برنامه توسعهدهندگان Play را برای برنامههای توزیعشده در Play محافظت و مدیریت میکند. علاوه بر این، امضای برنامه Play عملیات امضا را روی APKهایی که Play از AABهای آپلود شده تولید میکند، انجام میدهد. امضای برنامه Play برای برنامههای جدید لازم است تا بتوانند از AABها استفاده کنند.
چرا گوگل قابلیت امضای برنامههای پلی را راهاندازی کرد؟
سالها، کلیدهای امضای برنامه برای توسعهدهندگان Play یک چالش بود. از دست دادن کلید به معنای عدم توانایی در ارائه بهروزرسانیهای برنامه به کاربران بود و لو رفتن کلید، کاربران را در معرض خطر بهروزرسانیهای مخرب قرار میدهد. در توزیع نرمافزار، ذخیره و مدیریت کلیدهای نرمافزاری که توزیع میکنند برای کانالهای توزیع امری رایج است، زیرا این کار این خطرات را کاهش میدهد. امضای برنامه Play در سال ۲۰۱۷ راهاندازی شد تا خطر از دست دادن کلیدهای توزیع Play را از بین ببرد، محافظت از کاربران Play را پس از لو رفتن کلید امکانپذیر کند و به توسعهدهندگان از سرمایهگذاری امنیتی مداوم Google بهرهمند شود.
گوگل چگونه امنیت امضای برنامه Play را تضمین میکند؟
گوگل از کلیدهای توسعهدهندگان در همان زیرساخت امن و پیشرو در صنعت که برای محافظت از کلیدهای خود گوگل استفاده میشود، محافظت میکند. کلیدها به صورت رمزگذاری شده روی سرورهای مدیریت کلید اختصاصی و قفلشده با ACLهای دقیق و مسیرهای حسابرسی ضد دستکاری که تمام عملیات را پوشش میدهند، ذخیره میشوند. عملیات امنیتی ابری گوگل و بهترین شیوههای آن به صورت آنلاین شرح داده شده است.
آیا میتوانم کلید امضای برنامهای که Play برای برنامه من استفاده میکند را انتخاب کنم؟
بله، وقتی یک برنامه جدید ایجاد میکنید، میتوانید انتخاب کنید که گوگل از طرف شما یک کلید امضای برنامه تولید و ذخیره کند یا میتوانید کلید امضای برنامه خودتان را انتخاب کرده و یک کپی از آن را آپلود کنید.
میخواهم از همان کلید امضای برنامه برای پلی و سایر فروشگاههای برنامه استفاده کنم. آیا این هنوز امکانپذیر است؟
اگر پس از بررسی نحوهی عملکرد بهروزرسانیهای برنامه ، تصمیم گرفتهاید که از یک کلید امضای یکسان در چندین فروشگاه برنامه استفاده کنید، هنوز هم میتوانید این کار را انجام دهید. به یاد داشته باشید، این کار به هر فروشگاه برنامه اجازه میدهد تا بهروزرسانیهای بین فروشگاهی را برای برنامهی شما انجام دهد. شما دو گزینه دارید:
- شما میتوانید یک کلید را به صورت محلی تولید کنید و یک کپی از آن را در Play آپلود کنید. به این ترتیب، میتوانید از همان کلیدی که توسط Google Play استفاده میشود، هنگام ساخت برنامه خود برای سایر فروشگاههای برنامه استفاده کنید.
- شما میتوانید از یک کلید تولید شده توسط گوگل برای امضای برنامه Play استفاده کنید، سپس APK های توزیع شده را از Play Console که با کلید تولید شده توسط گوگل امضا شدهاند دانلود کنید و از آن APK ها برای توزیع در سایر فروشگاههای برنامه یا وبسایتها استفاده کنید.
آیا میتوانم بدون ارائه کپی کلید امضای برنامهام، از امضای برنامه Play برای برنامهای که قبل از آگوست ۲۰۲۱ ایجاد شده است استفاده کنم؟
بله، امضای برنامه Play از گزینه «ارتقاء کلید» برای برنامههایی که قبل از آگوست 2021 ایجاد شدهاند، پشتیبانی میکند. این به برنامه اجازه میدهد تا با یک کلید امضای برنامه جدید، استفاده از امضای برنامه Play را شروع کند. با این حال، برای استفاده از این گزینه، پس از انجام ارتقا، لازم است در هر نسخه دو چیز را آپلود کنید: یک بسته برنامه و یک APK قدیمی که با کلید امضای برنامه قدیمی شما امضا شده است. Play از AAB های شما برای تولید APK های امضا شده با کلید ارتقا یافته برای نصبهای جدید و بهروزرسانیهای آنها استفاده میکند. در عین حال، Play از APK های قدیمی شما برای بهروزرسانی برنامه برای کاربرانی که قبلاً برنامه شما را نصب کردهاند، استفاده خواهد کرد. با گذشت زمان، نصبهای قدیمی به کلید ارتقا یافته منتقل میشوند (مثلاً وقتی کاربران به یک دستگاه تلفن همراه جدید منتقل میشوند).
آیا راهی وجود دارد که بتوان از کلید امضای برنامه یکسان برای برنامههایی که قبل از آگوست 2021 ایجاد شدهاند و برنامههایی که بعد از آگوست 2021 ایجاد شدهاند، استفاده کرد؟
معمولاً استفاده از یک کلید امضای برنامه برای چندین برنامه توصیه نمیشود، استفاده از یک کلید منحصر به فرد برای هر برنامه امنتر است. با این حال، اگر نیاز به استفاده از یک کلید امضای برنامه برای چندین برنامه دارید، این امکان وجود دارد. میتوانید هنگام پیکربندی امضای برنامه Play، یک کپی از کلید امضای برنامه موجود را آپلود کنید. یا اگر نمیخواهید کلید امضای برنامه موجود را به اشتراک بگذارید، میتوانید از گزینه «ارتقاء کلید» که به زودی برای برنامه قبل از آگوست 2021 شما ارائه میشود، برای شروع استفاده از امضای برنامه Play استفاده کنید. به این ترتیب، هم برنامه قبل از آگوست 2021 و هم برنامه بعد از آگوست 2021 شما میتوانند از یک کلید جدید استفاده کنند.
آیا میتوانم کلید امضای برنامه مورد استفاده توسط امضای برنامه Play را تغییر دهم؟
بله، برنامهها میتوانند با درخواست ارتقاء کلید در کنسول Play، کلید خود را تغییر دهند.
چگونه میتوانم بررسی کنم که گوگل پلی تغییرات غیرمنتظرهای در کد من ایجاد نکرده است؟
در هر زمانی، میتوانید از گوگل پلی و از آخرین نسخهها و بستههای نرمافزاری در کنسول پلی، محصولات را دانلود و بررسی کنید. علاوه بر این، API توسعهدهندگان پلی به زودی امکان تأیید APKها را قبل از ارسال آنها به یک مسیر انتشار ارائه میدهد. همچنین میتوانید از یک ویژگی اختیاری به نام شفافیت کد برای بستههای نرمافزاری استفاده کنید. با شفافیت کد، شما و کاربران نهاییتان میتوانید یک فروشگاه نرمافزاری مانند گوگل پلی را برای پاسخگویی به کدی که ارائه میدهد، در نظر بگیرید.
شفافیت کد برای بستههای برنامه چگونه کار میکند؟
شفافیت کد یک ویژگی اختیاری است که امکان پاسخگویی فروشگاه برنامه توزیعکننده برنامه شما را در قبال کدی که ارائه میدهد، فراهم میکند. برای استفاده از شفافیت کد، در زمان ساخت، یک فایل شفافیت کد در برنامه خود ایجاد میکنید که نشاندهنده کد شماست (بهطور خاص، این فایلی است که حاوی هشهای کد برنامه شماست). شما آن را با کلید شفافیت کد خصوصی خود که فقط شما آن را دارید، امضا میکنید. هرگز لازم نیست کلید شفافیت کد خود را به گوگل ارائه دهید. سپس، در یک دستگاه، میتوانید یک APK نصبشده را بررسی کنید و تأیید کنید که فایل شفافیت کدی که امضا کردهاید هنوز با کد APK مطابقت دارد. این به شما اطمینان میدهد که حتی اگر خود APK در حین توزیع دوباره امضا شده باشد، کدی که توسط شفافیت کد تأیید شده است، اصلاح نشده است. اگر عدم تطابقی وجود داشته باشد، این نشان میدهد که کد در حین توزیع تغییر کرده است. شفافیت کد جایگزین امضاهای APK نمیشود و بخشی از پلتفرم اندروید نیست.
انتشار برنامهها و بازیهای حجیم در گوگل پلی
محدودیتهای حجم برنامههای گوگل پلی هنگام استفاده از AABها چیست؟
حداکثر حجم فشردهسازی شده برای دانلود یک ماژول پایه تولید شده از AAB، ۲۰۰ مگابایت است. یعنی، گوگل پلی ابتدا ماژول پایه و سپس هر ماژول ویژگی اضافی یا بستههای دارایی را از AAB شما تولید میکند. در مرحله بعد، گوگل پلی بررسی میکند که حداکثر حجم دانلود فشرده شده تجمعی که هر دستگاه جداگانه دریافت میکند، بیش از ۴ گیگابایت نباشد.
آیا گوگل پلی از فایلهای توسعه (OBB) برای بازیهای AAB پشتیبانی میکند؟
خیر، گوگل پلی از فایلهای توسعه برای فایلهای AAB پشتیبانی نمیکند. فایلهای توسعه (OBB) یک راهحل قدیمی مخصوص گوگل پلی برای انتشار برنامهها و بازیهای بزرگ با استفاده از APK هستند. جایگزینهای گوگل و شخص ثالث برای فایلهای AAB بزرگتر از ۲۰۰ مگابایت وجود دارد.
چگونه یک برنامه یا بازی بزرگتر از ۲۰۰ مگابایت را در گوگل پلی منتشر کنم؟
برنامهها و بازیهای بزرگی که از AAB استفاده میکنند، میتوانند یا از سرویسهای تحویل Play مانند Play Asset Delivery یا Play Feature Delivery برای عبور از محدودیت حجم ۲۰۰ مگابایت استفاده کنند یا میتوانند از شبکههای تحویل محتوای شخص ثالث استفاده کنند.
Play Asset Delivery چه مزایایی نسبت به فایلهای توسعه (OBB) ارائه میدهد؟
در گوگل پلی، فایلهای APK برای ارائه منابع اضافی به کاربران، به فایلهای توسعه جداگانه (OBB) نیاز داشتند. با این حال، از آنجا که OBBها امضا نشده بودند و در حافظه خارجی برنامه ذخیره میشدند، امنیت بالایی نداشتند. با Play Asset Delivery (PAD)، بازیهای بزرگتر از ۲۰۰ مگابایت میتوانند با انتشار کل بازی به عنوان یک بسته برنامه واحد در فروشگاه پلی، جایگزین OBBها شوند. PAD علاوه بر ارائه فرآیند انتشار روانتر و حالتهای تحویل انعطافپذیر، به این معنی است که بهروزرسانیها به فضای ذخیرهسازی دستگاه کمتری نیاز دارند. در نتیجه، میتواند نرخ نصب بالاتری را به همراه داشته باشد. در نهایت، با پشتیبانی ASTC در حدود ۸۰٪ از دستگاهها، ویژگی هدفگیری فرمت فشردهسازی بافت PAD به شما امکان میدهد ASTC را به دستگاههایی که از آن پشتیبانی میکنند، ارائه دهید. میتوانید طیف وسیعی از دستگاهها را هدف قرار دهید و در عین حال از سختافزار و فضای ذخیرهسازی دستگاه به طور کارآمد استفاده کنید.
ویژگیهای تحویل Google Play که توسط AABها قفلگشایی شدهاند
نمونههایی از ویژگیهای جدیدی که Play به توسعهدهندگان با استفاده از AAB ارائه میدهد، چیست؟
فروشگاههای اپلیکیشن مانند گوگل پلی، AABها را به APKهای قابل نصب تبدیل میکنند. مسئولیتپذیری در قبال APKها، ارائه ویژگیها و خدمات جدیدی را که برای توسعهدهندگان و کاربران سودمند است، امکانپذیر میسازد. پلی در حال حاضر چنین خدماتی را ارائه میدهد که به طور گسترده مورد استفاده و ارزشگذاری توسعهدهندگان قرار گرفتهاند، دو نمونه از آنها Play Feature Delivery و Play Asset Delivery هستند.
تحویل ویژگی پخش چیست؟
یکی از ویژگیهای بستههای نرمافزاری این است که امکان جداسازی یک برنامه به چندین ماژول به نام «ماژولهای ویژگی» را فراهم میکنند. این ماژولها میتوانند به صورت پویا در زمانهای مختلف به کاربران و دستگاهها تحویل داده شوند (برخلاف گذشته که همه چیز باید در زمان نصب به صورت یک فایل تحویل داده میشد). Play Feature Delivery به شما این امکان را میدهد که با حالتهای تحویل زمان نصب، مشروط و بر اساس تقاضا، ماژولهای ویژگی را که به کدام دستگاه و چه زمانی تحویل داده میشوند، سفارشی کنید. این به شما امکان میدهد اندازه برنامه خود را کاهش دهید که منجر به نصب بیشتر میشود و تجربه برنامه خود را متناسب کنید. به عنوان مثال، میتوانید یک ویژگی نادر مانند پشتیبانی مشتری بر اساس تقاضا را به جای زمان نصب، به کاربرانی که به آن نیاز دارند، ارائه دهید و اندازه نصب اولیه خود را برای همه کاربران کاهش دهید. یا میتوانید تجربه کامل برنامه خود را به دستگاههای رده بالا ارائه دهید در حالی که یک تجربه برنامه کوچکتر با ویژگیهای اختیاری و بر اساس تقاضا را به دستگاههای سطح پایین که محدودیتهای داده و ذخیرهسازی دستگاه دارند، ارائه دهید.
تحویل داراییهای بازی چیست؟
Play Asset Delivery به توسعهدهندگان بازی اجازه میدهد تا با ارائه پویای فایلهای حجیم در زمان بهینه، تجربه کاربری را بهبود بخشیده و زمان انتظار کاربر را کاهش دهند. بازیهایی که از Play Asset Delivery استفاده میکنند، میتوانند از فرمت فشردهسازی بافت نیز استفاده کنند، بنابراین کاربران شما فقط فایلهای مناسب برای دستگاه خود را دریافت میکنند، بدون اینکه فضا یا پهنای باند هدر رود.
آیا این ویژگیهای تحویل بازی در فروشگاههای برنامه دیگر نیز موجود است؟
خیر، Play Feature Delivery و Play Asset Delivery شامل برنامهها و بازیهایی هستند که مستقیماً با فروشگاه گوگل پلی در ارتباط هستند. این سرویسهای اختیاری نمونههایی از تمایز Play به عنوان یک فروشگاه اپلیکیشن و ارائه ارزش و سودمندی بیشتر برای توسعهدهندگان و کاربران Play هستند. سایر فروشگاههای اپلیکیشن با استفاده از بستههای اپلیکیشن و APKها، خدمات فروشگاه اپلیکیشن خود را به توسعهدهندگان ارائه میدهند.