محاذاة إلى الخلف

إنّ zipalign هي أداة لمحاذاة الأرشفة بتنسيق ZIP التي تساعد في ضمان تحميل جميع الملفات غير المضغوطة. في الأرشيف تتم محاذاتها مع بداية الملف. يتيح ذلك الوصول إلى الملفات مباشرة عبر mmap(2) ، ما مِن حاجة إلى نسخ هذه البيانات إلى ذاكرة الوصول العشوائي (RAM) والحدّ من استخدام تطبيقك للذاكرة.

استخدام zipalign لتحسين ملف APK قبل توزيعه على المستخدمين النهائيين. إذا كنت تستخدم الإصدار Android Studio الذي يستخدم المكوّن الإضافي لنظام Gradle المتوافق مع Android (AGP)، فهذا يعني القيام به تلقائيًا. وفي هذه الحالة، يجب مواصلة استخدام zipalign للتحقّق من أنّ حزمة APK. موقعك، ولكنك لست بحاجة إلى محاذاته. هذا الوثائق مخصص بشكل أساسي للمحافظين على وأنظمة التصميم المخصصة.

تنبيه: يجب استخدام zipalign في نقطة محدّدة من عملية التصميم. تعتمد هذه النقطة على أداة توقيع التطبيق التي تستخدمها:

  • إذا كنت تستخدم apksigner وzipalign يجب استخدامه قبل توقيع ملف APK. إذا وقّعت على حزمة APK تستخدم apksigner وتُجري تغييرات إضافية على حزمة APK، تم إبطال توقيعها.
  • في حال استخدام jarsigner (لا ننصح بهذا الخيار)، يجب استخدام zipalign بعد توفُّر ملف APK المشروع.

لتحقيق المحاذاة، يغيّر zipalign حجم الحقل "extra" في عنوان الملف المحلي المضغوط الأقسام. يمكن أن تؤدي هذه العملية أيضًا إلى تغيير البيانات الحالية في حقول "extra".

الاستخدام

إذا كانت حزمة APK تحتوي على مكتبات مشتركة (.so ملف)، استخدِم -P 16. للتأكد من محاذاتها مع حدود صفحة يبلغ حجمها 16 كيلوبايت، وهي مناسبة للسمة mmap(2) في أجهزة 16 كيلوبايت و4 كيلوبايت. بالنسبة إلى الملفات الأخرى، التي يتم تحديد محاذاتها بواسطة وسيطة محاذاة إلزامية إلى 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" المتاحة:

Option الوصف
يتحقق من المحاذاة فقط (لا يؤدي إلى تعديل الملف).
-f يؤدي إلى استبدال ملف الإخراج الحالي.
عرض مساعدة الأداة
-P <pagesize_kb> لمحاذاة ملفات .so غير المضغوطة مع حجم الصفحة المحدّد بالكيلوبايت. الخيارات الصالحة لـ <pagesize_kb> تكون 4 و16 و64.
-p 4 كيلوبايت تتم محاذاة ملف .so غير مضغوط. يُنصح باستخدام -P 16 بدلاً من ذلك، نظرًا لإيقاف -p نهائيًا.
-v النتائج المطوّلة.
-z يعيد الضغط باستخدام Zopfli.