زیپالاین

zipalign یک ابزار هم ترازی بایگانی فشرده است که کمک می کند اطمینان حاصل شود که تمام فایل های فشرده نشده در بایگانی نسبت به ابتدای فایل تراز شده اند. این امکان دسترسی مستقیم به فایل‌ها از طریق mmap(2) را فراهم می‌آورد و نیاز به کپی کردن این داده‌ها در RAM را از بین می‌برد و مصرف حافظه برنامه شما را کاهش می‌دهد.

از zipalign برای بهینه سازی فایل APK خود قبل از توزیع آن برای کاربران نهایی استفاده کنید. اگر با استفاده از Android Studio که از پلاگین Android Gradle (AGP) استفاده می کند، این کار به صورت خودکار انجام می شود. در این مورد، همچنان باید از zipalign برای تأیید تراز بودن APK استفاده کنید، اما نیازی به تراز کردن آن ندارید. این مستندات عمدتاً برای نگهبانان سیستم های ساخت سفارشی است.

احتیاط: شما باید از zipalign در نقطه خاصی از فرآیند ساخت استفاده کنید. این نکته بستگی به این دارد که از کدام ابزار امضای برنامه استفاده می کنید:

  • اگر apksigner استفاده می کنید، قبل از امضای فایل APK باید zipalign استفاده شود. اگر APK خود را با استفاده از apksigner امضا کنید و تغییرات بیشتری در APK ایجاد کنید، امضای آن باطل می شود.
  • اگر از jarsigner استفاده می کنید (توصیه نمی شود)، zipalign باید پس از امضای فایل APK استفاده شود.

برای دستیابی به تراز، zipalign اندازه فیلد "extra" را در بخش‌های زیپ Local File Header تغییر می‌دهد. این فرآیند همچنین می تواند داده های موجود در فیلدهای "extra" را تغییر دهد.

استفاده

اگر APK شما حاوی کتابخانه‌های مشترک (فایل‌های .so ) است، از -P 16 استفاده کنید تا مطمئن شوید که آنها با مرز صفحه 16KiB مناسب برای mmap(2) در دستگاه‌های 16KiB و 4KiB هستند. برای فایل‌های دیگری که هم‌ترازی آن‌ها با آرگومان تراز اجباری به zipalign تعیین می‌شود، باید در سیستم‌های 32 بیتی و 64 بیتی به 4 بایت تراز شوند.

برای تراز کردن infile.apk و ذخیره آن به عنوان outfile.apk :

zipalign -P 16 -f -v 4 infile.apk outfile.apk

برای تأیید تراز بودن existing.apk از دستور زیر استفاده کنید.

zipalign -c -P 16 -v 4 existing.apk

گزینه ها

جدول زیر گزینه های موجود zipalign را فهرست می کند:

گزینه توضیحات
ج فقط تراز را بررسی می کند (فایل را تغییر نمی دهد).
فایل خروجی موجود را رونویسی می کند.
-h راهنمای ابزار را نمایش می دهد.
-P <pagesize_kb> فایل های .so فشرده نشده را با اندازه صفحه مشخص شده در KiB تراز می کند. گزینه های معتبر برای <pagesize_kb> 4، 16 و 64 هستند.
صفحه 4KiB فایل های .so فشرده نشده را تراز می کند. توصیه می شود به جای آن از -P 16 استفاده کنید، زیرا -p منسوخ شده است.
-v خروجی پرمخاطب
-z با استفاده از Zopfli دوباره فشرده می شود.