רוכסן
קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
zipalign
הוא כלי להתאמה לארכיון ZIP שעוזר לוודא שכל הקבצים הלא דחוסים
בארכיון
מיושרים ביחס לתחילת הקובץ. כך ניתן לגשת לקבצים ישירות דרך
mmap(2)
, כך לא צריך להעתיק את הנתונים האלה בזיכרון ה-RAM ולהפחית את השימוש בזיכרון של האפליקציה.
יש להשתמש ב-zipalign
כדי לבצע אופטימיזציה של קובץ ה-APK לפני ההפצה שלו אל
למשתמשי קצה. אם גרסת ה-build שלך היא באמצעות Android Studio, שבו נעשה שימוש בפלאגין של Android Gradle (AGP),
מתבצע באופן אוטומטי. במקרה זה, עדיין צריך להשתמש ב-zipalign
כדי לאמת שה-APK
ישר, אבל אין צורך ליישר אותו. התיעוד הזה מיועד בעיקר למנהלים
ובהתאמה אישית של מערכות build.
זהירות: צריך להשתמש ב-zipalign
בנקודה ספציפית ב-
על תהליך ה-build. הנקודה הזו תלויה בכלי לחתימת אפליקציות שבו משתמשים:
-
אם משתמשים ב-
apksigner
, zipalign
חייב להיות בשימוש לפני שקובץ ה-APK חתום. אם חותמים על
ה-APK משתמש ב-apksigner
ומבצע שינויים נוספים ב-APK. החתימה שלו לא תקפה.
-
אם משתמשים ב-
jarsigner
(לא מומלץ), יש להשתמש ב-zipalign
אחרי שקובץ ה-APK
נחתמה.
כדי להשיג יישור, zipalign
משנה את גודל השדה "extra"
בכותרת הקובץ המקומי ב-ZIP
. התהליך הזה יכול גם לשנות את הנתונים הקיימים בשדות של "extra"
.
שימוש
אם ה-APK מכיל ספריות משותפות (.so
קבצים), יש להשתמש ב--P 16
כדי לוודא שהם מותאמים לגבול דף של 16KiB שמתאים עבור mmap(2)
במכשירים בגודל 16KiB וגם 4KiB. עבור קבצים אחרים, שההתאמה שלהם נקבעת לפי
הארגומנט 'חובה' ל-zipalign
צריך להיות מיושר ל-4 בייטים
במערכות של 32 סיביות וגם במערכות של 64 סיביות.
כדי ליישר את 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
:
אפשרות |
תיאור |
-c |
בודק את היישור בלבד (לא משנה את הקובץ). |
-f |
החלפת קובץ פלט קיים. |
-שע' |
הצגת עזרה בכלי. |
-P <pagesize_kb> |
התאמת קובצי .so לא דחוסים לגודל הדף שצוין ב-KiB. אפשרויות תקינות
עבור <pagesize_kb> הם 4, 16 ו-64. |
-p |
4KiB page-יישור של קובצי .so לא דחוסים. מומלץ להשתמש ב-
-P 16 במקום זאת, כי -p הוצא משימוש. |
-v |
פלט מילולי. |
-z |
נדחס מחדש באמצעות Zopfli. |
דוגמאות התוכן והקוד שבדף הזה כפופות לרישיונות המפורטים בקטע רישיון לתוכן. Java ו-OpenJDK הם סימנים מסחריים או סימנים מסחריים רשומים של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2025-07-27 (שעון UTC).
[[["התוכן קל להבנה","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-27 (שעון UTC)."],[],[],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. |"]]