زیپالاین
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
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 دوباره فشرده می شود. |
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# zipalign\n\n`zipalign` is a zip archive alignment tool that helps ensure that all uncompressed files\nin the archive\nare aligned relative to the start of the file. This lets the files be accessed directly via\n[mmap(2)](https://man7.org/linux/man-pages/man2/mmap.2.html)`\n`, removing the need to copy this data in RAM and reducing your app's memory usage.\n\nUse `zipalign` to optimize your APK file before distributing it to\nend users. If you build using Android Studio, which uses the Android Gradle plugin (AGP), this is\ndone automatically. In this case, you should still use `zipalign` to verify that the APK\nis aligned, but you don't need to align it. This documentation is mainly for maintainers of\ncustom build systems. \n\n**Caution:** You must use `zipalign` at a specific point in\nthe build process. That point depends on which app-signing tool you use:\n\n- If you use [apksigner](/studio/command-line/apksigner), `zipalign` must be used **before** the APK file has been signed. If you sign your APK using `apksigner` and make further changes to the APK, its signature is invalidated.\n- If you use [jarsigner](//docs.oracle.com/javase/tutorial/deployment/jar/signing.html) (not recommended), `zipalign` must be used **after** the APK file has been signed.\n\nTo achieve alignment, `zipalign` alters the size of the `\"extra\"` field in the zip **Local File Header**\nsections. This process can also alter existing data in the `\"extra\"` fields.\n\nUsage\n-----\n\nIf your APK contains shared libraries (`.so` files), use `-P 16`\nto ensure that they're aligned to a 16KiB page boundary suitable for `mmap(2)`\nin both 16KiB and 4KiB devices. For other files, whose alignment is determined by the\nmandatory alignment argument to `zipalign`, should be aligned to 4 bytes\non both 32-bit and 64-bit systems.\n\nTo align `infile.apk` and save it as `outfile.apk`: \n\n```\nzipalign -P 16 -f -v 4 infile.apk outfile.apk\n```\n\nTo confirm the alignment of `existing.apk`, use the following command. \n\n```\nzipalign -c -P 16 -v 4 existing.apk\n```\n\n### Options\n\nThe following table lists the available `zipalign` options:\n\n| Option | Description |\n|--------------------|-------------------------------------------------------------------------------------------------------------------------|\n| -c | Checks alignment only (does not modify file). |\n| -f | Overwrites existing output file. |\n| -h | Displays tool help. |\n| -P \\\u003cpagesize_kb\\\u003e | aligns uncompressed `.so` files to the specified page size in KiB. Valid options for `\u003cpagesize_kb\u003e` are 4, 16, and 64. |\n| -p | 4KiB page-aligns uncompressed `.so` files. It is recommended to use `-P 16` instead, as `-p` is deprecated. |\n| -v | Verbose output. |\n| -z | Recompresses using Zopfli. |"]]