يؤدي تحسين الرموز البرمجية وإخفاؤها باستخدام R8 أو أدوات بديلة (مثل أدوات التحسين المتوافقة مع ProGuard أو أدوات المعالجة اللاحقة الثانوية لملفات DEX) إلى تقليل حجم ملف DEX الخاص بتطبيقك وتحسين أداء وقت التشغيل وتقليل مساحة الذاكرة التي يشغلها.
تحتوي ملفات DEX، أو Dalvik Executable، على الرموز المجمَّعة المستخدَمة لتشغيل تطبيقك، وتشمل عادةً رموز Java وKotlin، على عكس رموز C++ المجمَّعة أو ملفات .so.
قياس تحسين الرموز البرمجية باستخدام R8 على الجهاز
لقياس حجم ملفات DEX غير المضغوطة لحِزمة تطبيقك محليًا باستخدام سطر الأوامر، نفِّذ ما يلي:
unzip -l <yourapp>.aab | grep -E '\.dex$' | awk '{sum+=$1} END {print sum}'
إذا كان تطبيقك يحسّن الأداء باستخدام R8، يمكنك قياس مستوى التحسين والتشويش وتقليل الحجم في حِزم التطبيق باستخدام أداة تحليل إعدادات R8. للاطّلاع على تعريفات تفصيلية للتقليص والتحسين وإخفاء مفاتيح فك التشفير، راجِع مقالة استخدام أداة تحليل إعدادات R8. يتضمّن مهارة تحليل R8 أيضًا تقرير "أداة تحليل إعدادات R8".
لفحص البيانات الوصفية بعد التحسين المضمّنة في حِزمة تطبيقك (بالنسبة إلى الإصدار 8.10 من "المكوّن الإضافي لنظام Android المتوافق مع Gradle" أو إصدار أحدث)، استخرِج الملف r8.json:
unzip -p <yourapp>.aab BUNDLE-METADATA/com.android.tools/r8.json
حلّ المشكلة
لمعالجة النتائج المنخفضة لتحسين رمز DEX، راجِع الاقتراحات استنادًا إلى نظام الإصدار وأداة التحسين:
المكوّن الإضافي لنظام Gradle المتوافق مع Android وR8
لتحسين نتائج تحسين رموز DEX في R8، اطّلِع على الإرشادات في مقالة تحسين R8. يمكنك أيضًا استخدام مهارة "محلّل R8" للحصول على إرشادات إضافية بشأن تحسين قواعد الاحتفاظ بالبيانات في تطبيقك.
أنظمة الإصدار ومعالجات DEX اللاحقة غير المتوافقة مع R8
إذا كانت عملية إنشاء تطبيقك تستخدم أدوات إنشاء مخصّصة أو معالجات لاحقة ثانوية لملفات DEX، اتّبِع الخطوات التالية لتحسين أداء تطبيقك:
- افتح حِزمة تطبيقك في "استوديو Android" واعرضها في أداة تحليل ملفات APK.
- اختَر جميع ملفات
.dex. - انتبه جيدًا إلى الملفات الأكبر حجمًا أثناء النقر على الزر "إزالة التشويش عن الأسماء" (ملاحظة: يتطلّب ذلك تحميل ملف
mapping.txt). إذا تبيّن لك أنّ بعض هذه الملفات يظل كبيرًا بعد التشويش، من المحتمل أن تكون متأثرة بقواعد الاحتفاظ على مستوى الحزمة. - ابحث في ملف
proguard-rules.proأوconfiguration.txtأو ما يعادلهما في أداة التحسين التي تستخدمها إذا كنت لا تستخدم R8، وابحث عن قواعد keep التي تتطابق مع الحِزم التي لا يتم تشويشها. على سبيل المثال، إذا كانcom.foo.حزمة كبيرة في ملف dex، ابحث عن قواعد الاحتفاظ بالتنسيق-keep com.foo.**أو-keep com.foo.bar.**. - يُرجى العِلم أنّ قواعد الاحتفاظ بالبيانات الخاصة بمستخدمي المكتبة قد لا تكون سهلة التحديد. إذا كنت تعتقد أنّ قاعدة مستهلك المكتبة تؤثّر في عملية التحسين، يمكنك التحقّق من ذلك محليًا من خلال إضافتها إلى تطبيق نموذجي مستقل باستخدام إصدار حديث من "مكوّن Android الإضافي"، وفحصه باستخدام "أداة تحليل إعدادات R8".