إزالة الرموز المميّزة

مقدمة

من المحتمل أن تحتوي خزانة المصدر الخاصة بتطبيق Java على عدد كبير من ملفات المصدر التي تكون إما غير مستخدمة تمامًا أو تم تضمينها لعدد قليل من الطرق فقط. ترجمة هذا الرمز المميت إلى النص Objective-C سيزيد من حجم تطبيق iOS بدون داعٍ وزيادة احتمال مواجهة حدوث أخطاء في الترجمة، لا سيما إذا كانت إحدى مكتبات Java تستخدم ميزات لا يدعمها مترجِم J2ObjC.

ProGuard هي أداة مفتوحة المصدر تساعدك في تقليل وتشويش كود بايت Java وتشويهه. إذا أردت، يمكنك طباعة وعاء رمز بايت "الاستخدام" يسرد جميع الفئات والطرق غير المستخدمة في تطبيقك. يمكن لـ J2ObjC استخدام مثل هذا التقرير لتخطي هذه الدروس والطرق أثناء الترجمة.

يمكن تنزيل ProGuard هنا.

تكوين ProGuard

يقبل ProGuard ملف الإعداد كوسيطة سطر أوامر تحدد التحسينات التي يتضمنها تنفيذها والتقارير التي ينبغي أن يُنشئها. وبما أن J2ObjC يحتاج فقط إلى معرفة الرمز المميت، إيقاف جميع التحسينات والتسجيلات غير الضرورية يجب أن يكون الملف الذي تم تمريره إلى J2ObjC تتكون فقط من نص عنوان ProGuard وتقرير الاستخدام.

تأكّد أولاً من أنّ لديك وعاء رمز بايت لتطبيقك يتجاوب مع حاوية المصدر. يمكنك استخدام ملف الإعداد التالي، المنسوخ من دليل ProGuard، كنموذج لإنشاء التي تتوقعها J2ObjC:

-injars app-bin.jar
-libraryjars /lib/rt.jar

-dontoptimize
-dontobfuscate
-dontpreverify
-printusage
-dontnote

-keep public class com.foo.app.Main {
    public static void main(java.lang.String[]);
}

-keepclassmembers class * {
    static final % *;
    static final java.lang.String *;
}

عدِّل ملف الإعداد هذا للتأكّد من أنّ ProGuard لا يزيل أي شيء لا ينبغي إزالته. إذا كان جرّة تطبيق وليس مجرد مكتبة، سيتم تحديد طريقة main() كما القيام به هنا ينبغي أن يحتفظ بكل ما هو ضروري؛ يمكنك فحص المخرجات الناتجة من ProGuard كفحص لضمان السلامة

تشغيل ProGuard

بعد أن يكون لديك وعاء رمز البايت الخاص بالتطبيق وملف إعداد ProGuard مخصص (يسمى، لنفترض، usage.pg)، يمكنك إنشاء ملف تقرير استخدام باستخدام الأمر التالي:

java -jar proguard.jar @usage.pg > usage.log

سيؤدي هذا إلى إنشاء ملف باسم usage.log يسرد الفئات والطرق غير المستخدمة في تطبيقك.

تشغيل J2ObjC مع حذف الرمز المميت

بعد أن أصبح لديك تقرير استخدام ProGuard، يمكنك تفعيل مرحلة إزالة الرمز المعطَّل في J2ObjC باستخدام علامة سطر الأوامر --dead-code-report <file>. ترجمة The DeadCodeEliminator تقرير الاستخدام لإزالة الرمز البرمجي غير الصحيح من كل ملف مصدر قبل الترجمة إلى الهدف-ج.