يتضمّن "مُشغِّل Android" (ART) مُجمِّعًا للترجمة أثناء التشغيل (JIT) مع ميزة تحليل رموز البرامج التي تحسِّن باستمرار أداء تطبيقات Android أثناء تشغيلها. يكمل مُجمِّع JIT مُجمِّع AOT الحالي في ART ويُحسِّن أداء وقت التشغيل ويوفّر مساحة تخزين ويسري عملية تحديث التطبيقات والنظام. ويُحسِّن هذا الإصدار أيضًا من أداة التحويل المسبق إلى رموز ثابتة (AOT) من خلال تجنُّب تباطؤ النظام أثناء تحديثات التطبيقات التلقائية أو إعادة تجميع التطبيقات أثناء التحديثات عبر شبكة غير سلكية (OTA).
على الرغم من أنّ ميزة "التجميع أثناء التنفيذ" وميزة "التجميع المُسبَق" تستخدمان المُجمِّع نفسه مع مجموعة مماثلة من التحسينات، قد لا يكون الرمز الذي تم إنشاؤه متطابقًا. تستفيد تقنية JIT من معلومات نوع وقت التشغيل ، ويمكنها إجراء تضمين أفضل، كما تتيح تجميع ميزة "الاستبدال على الرزمة" (OSR) ، وكل ذلك يؤدي إلى إنشاء رمز مختلف قليلاً.
بنية JIT

تجميع أثناء التنفيذ
يتضمن التجميع أثناء التنفيذ الأنشطة التالية:

- يشغِّل المستخدم التطبيق، ما يؤدي إلى تنشيط ART لتحميل
.dex
الملف.- إذا كان ملف
.oat
(ملف AOT ثنائي لملف.dex
) متاحًا، يستخدمه ART مباشرةً. على الرغم من أنّه يتم إنشاء ملفات.oat
بانتظام، إلا أنّها لا تحتوي دائمًا على رمز مُجمَّع (ملف ثنائي AOT). - إذا لم يحتوي ملف
.oat
على رمز مُجمَّع، يتم تشغيل ART من خلال JIT والمُفسِّر لتنفيذ ملف.dex
.
- إذا كان ملف
- يتم تفعيل ميزة "التجميع أثناء التنفيذ" لأي تطبيق لم يتم تجميعه وفقًا لفلترة التجميع
speed
(التي تشير إلى "تجميع أكبر قدر ممكن من التطبيق"). - يتم تفريغ بيانات الملف الشخصي لميزة "الترجمة الفورية" في ملف في دليل نظام يمكن للتطبيق فقط الوصول إليه.
- يُحلِّل الخادم غير القابل للتشغيل (
dex2oat
) عملية تجميع AOT هذا الملف لتشغيل عملية تجميعه.
الشكل 3. أنشطة الخدمة الخفية لميزة "التجميع أثناء التنفيذ"
خدمة Google Play هي مثال على الخدمات التي تستخدمها التطبيقات الأخرى التي تعمل بطريقة مشابهة للمكتبات المشتركة.
سير عمل JIT

- يتم تخزين معلومات التحليل في ذاكرة التخزين المؤقت للرمز وتخضع لجمع المهملات في حال الضغط على الذاكرة.
- لا يمكن ضمان أن تحتوي اللقطة التي تم التقاطها عندما كان التطبيق في الخلفية على بيانات كاملة (أي كل ما تم تشغيله باستخدام تقنية JIT).
- لا يتمّ ضمان تسجيل كلّ شيء (لأنّ ذلك قد يؤثّر في أداء وقت التشغيل).
- يمكن أن تكون الطرق في ثلاث حالات مختلفة:
- مفسَّرة (رمز dex)
- تم تجميعه أثناء التنفيذ
- تم تجميعه باستخدام ميزة AOT
- تعتمد متطلبات الذاكرة لتشغيل JIT بدون التأثير في أداء التطبيقات التي تعمل في المقدّمة على التطبيق المعني. تتطلّب التطبيقات الكبيرة مزيدًا من الذاكرة مقارنةً بالتطبيقات الصغيرة. بشكل عام، يصل حجم التطبيقات الكبيرة إلى 4 ميغابايت تقريبًا.
تفعيل تسجيل JIT
لتفعيل تسجيل JIT، شغِّل الأوامر التالية:
adb root
adb shell stop
adb shell setprop dalvik.vm.extra-opts -verbose:jit
adb shell start
إيقاف ميزة "التجميع أثناء التنفيذ"
لإيقاف JIT، شغِّل الأوامر التالية:
adb root
adb shell stop
adb shell setprop dalvik.vm.usejit false
adb shell start
فرض عملية التجميع
لفرض عملية الترجمة، نفِّذ ما يلي:
adb shell cmd package compile
حالات الاستخدام الشائعة لاجبار تجميع حزمة معيّنة:
- المستندة إلى الملف الشخصي:
adb shell cmd package compile -m speed-profile -f my-package
- كامل:
adb shell cmd package compile -m speed -f my-package
حالات الاستخدام الشائعة لاجبار تجميع جميع الحِزم:
- المستندة إلى الملف الشخصي:
adb shell cmd package compile -m speed-profile -f -a
- كامل:
adb shell cmd package compile -m speed -f -a
محو بيانات الملف الشخصي
على الإصدار 13 من نظام التشغيل Android أو الإصدارات الأقدم
لمحو بيانات الملف الشخصي على الجهاز وإزالة الرمز المجمَّع، نفِّذ ما يلي:
adb shell pm compile --reset
على الإصدار 14 من نظام التشغيل Android أو الإصدارات الأحدث
لمحو بيانات الملف الشخصي على الجهاز فقط:
adb shell pm art clear-app-profiles
ملاحظة: على عكس الأمر المخصّص لنظام التشغيل Android 13 أو الإصدارات الأقدم، لا يؤدي هذا الأمر إلى محو بيانات الملف الشخصي الخارجي (`.dm`) التي تم تثبيتها مع التطبيق.
لمحو بيانات الملف الشخصي على الجهاز وإزالة الرمز المجمَّع الذي تم إنشاؤه من بيانات الملف الشخصي على الجهاز (أي إعادة الضبط إلى حالة التثبيت)، نفِّذ ما يلي:
adb shell pm compile --reset
ملاحظة: لا يزيل هذا الأمر الرمز المجمَّع الذي تم إنشاؤه من بيانات الملف الشخصي الخارجي (.dm) التي تم تثبيتها مع التطبيق.
لمحو كل التعليمات البرمجية المجمّعة، نفِّذ الأمر التالي:
adb shell cmd package compile -m verify -f
ملاحظة: يحتفظ هذا الأمر ببيانات الملف الشخصي على الجهاز.