تناقش هذه الصفحة كيفية ضبط وقت تشغيل Android (ART) وخيارات التجميع. المواضيع
سنتناول هنا إعدادات التجميع المسبق لصورة النظام، dex2oat
وخيارات التحويل البرمجي، وكيفية مقايضة مساحة قسم النظام، ومساحة قسم البيانات،
أدائه.
راجع ART وDalvik وتنسيق Dalvik القابل للتنفيذ للعمل مع ART. راجع جارٍ التحقق سلوك التطبيق في وقت تشغيل Android (ART) لضمان عمل التطبيقات بشكل صحيح.
آلية عمل ART
تستخدم ART تقنية التجميع المسبق (AOT)، بدءًا من Android 7، مزيجًا مختلطًا من البيانات المجمّعة من AOT والترجمة في الوقت المناسب (JIT) ويمكنك تحديد ملف AOT وفقًا لاهتماماتك. الجمع بين جميع أوضاع التنفيذ هذه قابلة للتهيئة وستتم مناقشتها في هذا القسم. على سبيل المثال، تم ضبط أجهزة Pixel على العمل في التدفق التالي:
- يتم تثبيت تطبيق في البداية باستخدام ملف بيانات dex (
.dm
) تم توزيعه بواسطة "متجر Play" الذي يتضمّن ملفًا شخصيًا على السحابة الإلكترونية يجمع ART AOT الأساليب المدرجة في السحابة بك. وإذا تم تثبيت التطبيق بدون ملف بيانات وصفية لـ dex، لن يتم تنفيذ تجميع AOT تنفيذها. - في المرات القليلة الأولى التي يتم فيها تشغيل التطبيق، يتم تفسير الطرق غير المجمعة من خلال AOT. من بين الطرق المفسَّرة، يتم تجميع الطرق التي يتم تنفيذها بشكل متكرر بعد ذلك ضمن JIT. الفن ينشئ ملفًا شخصيًا محليًا استنادًا إلى التنفيذ ويدمجه مع الملف الشخصي على السحابة الإلكترونية (إن كان واحدًا موجود).
- عندما يكون الجهاز غير نشِط لفترة قصيرة ويجري شحنه، يتم تشغيل برنامج خفي لتجميع البيانات لإعادة تجميع التطبيق. استنادًا إلى الملف التعريفي المُجمَّع الذي تم إنشاؤه خلال عمليات التشغيل القليلة الأولى.
- في عمليات التشغيل اللاحقة للتطبيق، تستخدم ART العناصر التي تم إنشاؤها بواسطة التجميع. يحتوي على المزيد من الرموز البرمجية المجمّعة من خلال AOT، مقارنةً بتلك التي تم إنشاؤها أثناء لا يزال يتم تفسير الطرق غير المجمعة من خلال AOT أو تجميع JIT. عدّل ART الملف الشخصي التثبيت، استنادًا إلى التنفيذ، ويتم اختيار الملف الشخصي من خلال عمليات التشغيل اللاحقة البرنامج الخفي للتجميع.
تتألف ART من برنامج التجميع (أداة dex2oat
) وبيئة تشغيل.
(libart.so
) التي يتم تحميلها أثناء التشغيل. تشير رسالة الأشكال البيانية
تستخدم أداة "dex2oat
" ملف APK وتنشئ ملفًا واحدًا أو أكثر.
ملفات التجميع التي يتم تحميلها في بيئة التشغيل. عدد الملفات
والإضافات والأسماء للتغيير عبر الإصدارات، ولكن اعتبارًا من
في إصدار Android 8، يتم إنشاء الملفات التالية:
.vdex
: يحتوي على بعض البيانات الوصفية الإضافية لتسريع عملية التحقق، إلى جانب برمز DEX غير المضغوط لحزمة APK..odex
: يحتوي على رمز AOT مجمّع للطرق في APK.- يحتوي
.art (optional)
على ART داخليًا استخدام تمثيلات لبعض السلاسل والفئات المدرجة في APK لتسريع بدء تشغيل التطبيق.
خيارات التحويل البرمجي
هناك فئتان من خيارات التجميع لـ ART:
- تهيئة ذاكرة ROM للنظام: ما هو الرمز الذي يتم تجميعه في بيئة AOT عند إنشاء صورة النظام.
- إعدادات بيئة التشغيل: كيفية تجميع ART للتطبيقات وتشغيلها على الخاص بك.
فلاتر برامج التجميع
يتمثل أحد خيارات ART الأساسية لتهيئة هاتين الفئتين في أداة التجميع
والفلاتر. تعمل عوامل تصفية التجميع على كيفية قيام ART بتجميع التعليمات البرمجية DEX وهي
تم تمرير الخيار إلى أداة dex2oat
. بدءًا من Android 8،
هناك أربعة فلاتر معتمدة رسميًا:
verify
: يجب تنفيذ التحقّق من رمز DEX فقط (بدون تجميع AOT).quicken
: (حتى الإصدار 11 من نظام Android) يجب تشغيل رمز DEX. والتحقق وتحسين بعض تعليمات DEX للحصول على أداء أفضل للترجمة الفورية.speed
: يمكنك تنفيذ عملية التحقّق من رمز DEX وتجميع جميع الطرق باستخدام AOT.speed-profile
: تفعيل طريقة التحقّق من رمز DEX وطريقة تجميع AOT مدرجة في ملف ملف شخصي.
إعداد ذاكرة القراءة فقط للنظام
يتم تجميع المكتبات والتطبيقات المثبَّتة مسبقًا من خلال AOT عندما يتم إنشاء صورة نظام. هذا النمط تُسمى dexpreopt. تكون هذه الملفات المجمعة قابلة للاستخدام طالما أن جميع التبعيات تظل بدون تغيير، ولا سيما مسار فئة التمهيد.
ملاحظة: إذا أخذ الجهاز يتم تحديث وحدة النظام، يصبح مسار فئة التمهيد أن تتغير في التحديث التالي، ما يؤدي إلى عرض جميع الملفات القديمة وغير القابلة للاستخدام.
يتوفر عدد من خيارات إصدار ART لتكوين dexpreopt. كيفية الضبط تعتمد هذه الخيارات على مساحة التخزين المتاحة لصورة النظام وعدد التطبيقات المثبتة مسبقًا. يمكن تقسيم ملفات JARs أو APK التي يتم تجميعها في ذاكرة ROM للنظام إلى أربعة الفئات:
- رمز مسار فئة التشغيل: تم جمعه باستخدام فلتر التجميع في
speed-profile
حسب الافتراضي. - رمز خادم النظام (يُرجى الاطّلاع على
PRODUCT_SYSTEM_SERVER_JARS
،PRODUCT_APEX_SYSTEM_SERVER_JARS
،PRODUCT_STANDALONE_SYSTEM_SERVER_JARS
،PRODUCT_APEX_STANDALONE_SYSTEM_SERVER_JARS
لاحقًا في هذا المستند):- (الإصدار 14 من نظام التشغيل Android والإصدارات الأحدث) تم التجميع باستخدام
speed-profile
أو يتم تجميعها باستخدام فلتر برنامج التجميع فيspeed
إذا كانت التي لم يتم تقديم ملف التعريف بها. - (الإصدار 13 من نظام التشغيل Android والإصدارات الأقدم) تم التجميع باستخدام
speed
عامل تصفية التجميع افتراضيًا.
PRODUCT_SYSTEM_SERVER_COMPILER_FILTER
(يُرجى الاطّلاع لاحقًا في هذا المستند). - (الإصدار 14 من نظام التشغيل Android والإصدارات الأحدث) تم التجميع باستخدام
- التطبيقات الأساسية الخاصة بالمنتج (اطّلِع على
PRODUCT_DEXPREOPT_SPEED_APPS
لاحقًا في هذا الموضوع). مستند): يتم تجميعها باستخدام فلتر التجميع التلقائي فيspeed
. - جميع التطبيقات الأخرى: مجمّعة باستخدام فلتر برنامج التجميع في
speed-profile
تلقائيًا، أو تجميعها باستخدام فلتر برنامج التجميعverify
في حال عدم توفُّر ملف شخصي.قابل للضبط من خلال
PRODUCT_DEX_PREOPT_DEFAULT_COMPILER_FILTER
(يُرجى الاطّلاع لاحقًا في هذا المستند).
خيارات ملف Makefile
WITH_DEXPREOPT
DONT_DEXPREOPT_PREBUILTS
(الإصدار 5 والإصدارات الأحدث من نظام التشغيل Android)PRODUCT_DEX_PREOPT_DEFAULT_COMPILER_FILTER
(Android 9 وأعلى)WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY
(بما أنّ نظام التشغيل Android 8 MR1)LOCAL_DEX_PREOPT
PRODUCT_DEX_PREOPT_BOOT_FLAGS
PRODUCT_DEX_PREOPT_DEFAULT_FLAGS
PRODUCT_DEX_PREOPT_MODULE_CONFIGS
PRODUCT_DEXPREOPT_SPEED_APPS
(اعتبارًا من نظام التشغيل Android 8)PRODUCT_SYSTEM_SERVER_APPS
(اعتبارًا من نظام التشغيل Android 8)PRODUCT_ART_TARGET_INCLUDE_DEBUG_BUILD
(منذ Android 8)WITH_DEXPREOPT_PIC
(حتى الإصدار 7 من Android)WITH_DEXPREOPT_BOOT_IMG_ONLY
(حتى Android 7 MR1)PRODUCT_SYSTEM_SERVER_COMPILER_FILTER
- (الإصدار 14 من نظام التشغيل Android والإصدارات الأحدث) في حال عدم تحديده، سيتم عرض
speed-profile
يمكن استخدام فلتر التجميع أو استخدام فلتر التجميع البرمجيspeed
إذا لم يكن الملف الشخصي المقدمة. - (الإصدار 13 من نظام التشغيل Android والإصدارات الأقدم) في حال عدم تحديده، يمكن لبرنامج التحويل البرمجي
speed
استخدام عامل التصفية. - في حال الضبط على
speed
، يتم استخدام فلتر المُجمع فيspeed
. - في حال الضبط على
speed-profile
، يتم استخدام فلتر المُجمع فيspeed-profile
، أو يتم استخدام فلتر التجميع البرمجيverify
إذا لم يتم توفير ملف شخصي. - في حال الضبط على
verify
، يتم استخدام فلتر المُجمع فيverify
. PRODUCT_SYSTEM_SERVER_JARS
،PRODUCT_APEX_SYSTEM_SERVER_JARS
،PRODUCT_STANDALONE_SYSTEM_SERVER_JARS
,PRODUCT_APEX_STANDALONE_SYSTEM_SERVER_JARS
- (مطلوب)
PRODUCT_SYSTEM_SERVER_JARS
: قائمة ملفات JAR لمسار خادم النظام المفعّلة المنصة (أي كجزء منSYSTEMSERVERCLASSPATH
). جارٍ إضافة خادم النظام يجب إدخال ملفات JAR للمسار إلى هذه القائمة. تعذّرت إضافة ملفات JAR لمسار خادم النظام إلى القائمة يؤدي إلى عدم تحميل ملفات JAR هذه. - (مطلوب)
PRODUCT_APEX_SYSTEM_SERVER_JARS
: قائمة ملفات JAR لمسار خادم النظام باستخدام APEX (أي كجزء منSYSTEMSERVERCLASSPATH
). التنسيق هو<apex name>:<jar name>
إضافة ملفات JAR لمسار خادم نظام APEX إلى هذه القائمة مطلوبة. في حال تعذُّر إضافة ملفات JAR لمسار خادم نظام APEX إلى هذه القائمة، تصبح عدم تحميل ملفات JAR هذه. - (اختياري، الإصدار 13 من نظام التشغيل Android والإصدارات الأقدم)
PRODUCT_STANDALONE_SYSTEM_SERVER_JARS
: قائمة ملفات JAR التي يحمِّلها خادم النظام ديناميكيًا باستخدام أدوات تحميل فئات منفصلة (من خلالSystemServiceManager.startServiceFromJar
). إضافة ملفات JAR لخادم النظام المستقل إلى هذه القائمة ليست مطلوبة لكن يوصى بها بشدة لأنها تجعل JAR من التجميع وبالتالي تحقق أداءً جيدًا في بيئة التشغيل. - (مطلوب، بدءًا من Android 13)
PRODUCT_APEX_STANDALONE_SYSTEM_SERVER_JARS
: قائمة ملفات JAR التي يتم عرضها مع APEX التي يحمّلها خادم النظام ديناميكيًا باستخدام برامج تحميل فئات منفصلة (التي من خلالSystemServiceManager.startServiceFromJar
أو تم الإعلان عنها على أنها<apex-system-service>
). التنسيق هو<apex name>:<jar name>
إضافة ملفات JAR المستقلة لخادم نظام APEX إلى هذه القائمة مطلوبة. في حال تعذُّر إضافة ملفات JAR المستقلة لخادم نظام APEX إلى هذه القائمة، تصبح تعذّر بدء التشغيل.
ما إذا تم استدعاء dex2oat
على رمز DEX المثبّت على صورة النظام ويكون مُفعَّلاً بشكلٍ تلقائي.
يؤدي تفعيل DONT_DEXPREOPT_PREBUILTS
إلى منع إنشاء العناصر المُنشأة مسبقًا.
غير مكتمل. هذه هي التطبيقات التي تتضمّن include $(BUILD_PREBUILT)
المحددة في Android.mk
. التخطّي
استخدام التطبيقات المصمَّمة مسبقًا والتي من المرجّح أن يتم تحديثها عبر Google Play
ويوفر مساحة في صورة النظام ولكنه يضيف إلى وقت التشغيل الأول. تجدر الإشارة إلى أنّ هذا الخيار ليس له أي تأثير.
على التطبيقات المصمّمة مسبقًا والمحددة في Android.bp
.
يحدد PRODUCT_DEX_PREOPT_DEFAULT_COMPILER_FILTER
فلتر التجميع التلقائي.
للتطبيقات الحالية. هذه التطبيقات محدّدة في اللغة Android.bp
أو لها
تم تحديد include $(BUILD_PREBUILT)
في Android.mk
. إذا لم يتم تحديدها،
تكون القيمة التلقائية هي speed-profile
أو verify
إذا لم يتم تحديد القيمة.
ولم يتم توفير ملف شخصي.
يؤدي تفعيل WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY
إلى تفعيل
وطبقة تشغيل فئة التشغيل وحاويات خادم النظام.
يمكن أيضًا تفعيل Dexpreopt أو إيقافه على أساس تطبيق فردي من خلال
لتحديد الخيار LOCAL_DEX_PREOPT
في تعريف الوحدة.
ويمكن الاستفادة من ذلك في إيقاف إمكانية تفعيل التطبيقات التي قد تتم فورًا
تحديثات Google Play نظرًا لأن التحديثات ستعرض
الرمز في صورة النظام قديمة. يعد ذلك مفيدًا أيضًا في توفير مساحة على
ترقية الإصدار عبر الهواء لأنّ المستخدمين قد يكون لديهم إصدارات أحدث من التطبيقات في
قسم البيانات.
تتيح LOCAL_DEX_PREOPT
استخدام القيمتين true
أو false
من أجل
لتفعيل أو إيقاف dexpreopt، على التوالي. بالإضافة إلى ذلك، بإمكان "nostripping
"
يتم تحديده إذا كان يجب ألا يزيل dexpreopt classes.dex
من ملف APK أو JAR. تتم عادةً إزالة هذا الملف لأنه
هناك حاجة إليها بعد dexpreopt، إلا أن هذا الخيار الأخير ضروري
السماح لتوقيعات حِزم APK التابعة لجهات خارجية بأن تظل صالحة.
تمرير الخيارات إلى "dex2oat
" للتحكّم في كيفية تشغيل صورة التشغيل
مجمعة. ويمكن استخدامها لتحديد قوائم مخصصة لفئات الصور، وتجميعها
وقوائم الفئات وعوامل تصفية التجميع.
تمرير الخيارات إلى dex2oat
للتحكّم في كيفية تنفيذ كل الإجراءات باستثناء
يتم تجميع صورة بدء التشغيل.
تتيح هذه السياسة تمرير خيارات dex2oat
لعنصر معيّن.
الوحدة وتكوين المنتج. إنه موضوع في موقع
ملف device.mk
بواسطة "$(call add-product-dex-preopt-module-config,<modules>,<option>)
"
حيث <modules>
هي قائمة من LOCAL_MODULE
LOCAL_PACKAGE
اسم لملف JAR وAPK على التوالي.
قائمة التطبيقات التي تمّ تحديدها على أنّها أساسية للمنتجات
التي يُستحسن تجميعها باستخدام فلتر التجميع في speed
. بالنسبة
على سبيل المثال، تحصل التطبيقات الثابتة مثل SystemUI على فرصة استخدام
مع البيانات المجمّعة الموجّهة من خلال الملف الشخصي فقط عند
إعادة التشغيل في المرة التالية، لذا قد يكون من الأفضل
أن تكون هذه التطبيقات مجمعة دائمًا على AOT.
قائمة التطبيقات التي تم تحميلها من خلال خادم النظام. هذه التطبيقات
يتم تجميعها بشكل تلقائي باستخدام فلتر برنامج التجميع في speed
.
تحديد ما إذا كان سيتم تضمين إصدار تصحيح أخطاء ART على الجهاز بشكل افتراضي،
مُفعّل لإصدارات userdebug وeng. يمكن إلغاء السلوك بشكل صريح
اضبط الخيار على true
أو false
.
يستخدم الجهاز تلقائيًا الإصدار الذي لا يحتوي على تصحيح الأخطاء (libart.so
).
للتبديل، اضبط خاصية النظام persist.sys.dalvik.vm.lib.2
على
libartd.so
في إصدارات Android من 5.1.0 إلى 6.0.1، بإمكان WITH_DEXPREOPT_PIC
المحددة لتفعيل الرمز المستقل عن الموضع (PIC). باستخدام هذا، تم تجميع
الرمز من الصورة لا يلزم تغيير مكانه من
/system
إلى /data/dalvik-cache
، ما يوفّر مساحة في قسم البيانات.
ومع ذلك، هناك تأثير بسيط في وقت التشغيل لأنّه يوقف عملية التحسين التي تستفيد
من التعليمات البرمجية التي تعتمد على الموضع. عادةً ما تحتاج الأجهزة التي تريد توفير مساحة في /data
يجب أن تمكّن تجميع PIC.
في الإصدار Android 7.0، كانت ميزة تجميع PIC مفعَّلة تلقائيًا.
تم استبدال هذا الخيار بـ "WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY
".
تستخدم أيضًا ملفات JAR لخادم النظام مسبقًا.
يحدد هذا الخيار فلتر المحول البرمجي لخادم النظام.
في ما يلي قوائم JAR التي تم تحميلها من خلال خادم النظام. يتم تجميع JAR باستخدام
فلتر التجميع المحدد من قِبل PRODUCT_SYSTEM_SERVER_COMPILER_FILTER
إعداد مسار التمهيد
قائمة الفئات المحملة مسبقًا هي قائمة بالفئات التي يهيئها Zygote على
لبدء التشغيل. يساهم هذا الإجراء في عدم الاضطرار إلى تشغيل أدوات إعداد الفئات هذه لكل تطبيق.
بشكل منفصل، ما يسمح لها ببدء تشغيلها بشكل أسرع ومشاركة الصفحات في الذاكرة. تشير رسالة الأشكال البيانية
يتوفّر ملف قائمة الصفوف الذي تم تحميله مسبقًا في frameworks/base/config/preloaded-classes
.
افتراضيًا، وتحتوي على قائمة تم إعدادها للاستخدام العادي للهاتف. هذا قد
أن تكون مختلفة عن الأجهزة الأخرى مثل الأجهزة القابلة للارتداء، ويجب ضبطها
وفقًا لذلك. كن حذرًا عند ضبط هذا؛ إضافة الكثير من الفاقد للفئات
عند تحميل الصفوف غير المستخدَمة. تفرض إضافة عدد قليل جدًا من الفئات على كل تطبيق
أن يكون لديك نسخة خاصة بها، والتي مرة أخرى تهدر الذاكرة.
مثال على الاستخدام (في device.mk
للمنتج):
PRODUCT_COPY_FILES += <filename>:system/etc/preloaded-classes
ملاحظة: يجب وضع هذا الخط قبل
اكتساب أي ملفات إعداد للمنتج تحصل على الملف التلقائي من
build/target/product/base.mk
إعدادات بيئة التشغيل
خيارات JIT
تؤثر الخيارات التالية في إصدارات Android فقط حيث يتم تجميع ART JIT متاح.
dalvik.vm.usejit
: ما إذا كان JIT مفعَّلاً أم لاdalvik.vm.jitinitialsize
(القيمة التلقائية 64 كيلوبايت): السعة المبدئية من ذاكرة التخزين المؤقت للرمز. وستزيد ذاكرة التخزين المؤقت للرموز بشكل منتظم عند الحاجة.dalvik.vm.jitmaxsize
(القيمة التلقائية 64M): الحد الأقصى لسعة ذاكرة التخزين المؤقت للرموز.dalvik.vm.jitthreshold
(القيمة التلقائية 10,000): الحد الذي يمكن أن يجب أن يمر عدّاد الطريقة بالترتيب لطريقة تجميع JIT. "الجاذبية" العدّاد هو مقياس داخلي إلى بيئة التشغيل. وهي تشمل عدد الاتصالات والفروع الخلفية وغيرها مماثلة.dalvik.vm.usejitprofiles
(حتى نظام التشغيل Android 13): سواء كان عدم تفعيل الملفات الشخصية في JIT. ويمكن استخدام هذه السمة حتى إذا كانت السمةdalvik.vm.usejit
خطأ. لاحظ أنه إذا كان ذلك خاطئًا، فسينفذ فلتر التجميع العنقوديspeed-profile
لا تؤدي AOT إلى تجميع أي طريقة تعادلverify
. منذ على الإصدار 14 من نظام التشغيل Android، تكون الملفات الشخصية في JIT مفعّلة دائمًا ولا يمكن إيقافها.dalvik.vm.jitprithreadweight
(القيمة التلقائية هيdalvik.vm.jitthreshold
/ 20): وزن "نماذج" JIT (يُرجى الاطّلاع على jitthreshold) للاطّلاع على سلسلة محادثات واجهة مستخدم التطبيق. استخدِمها لتسريع عملية تجميع الفيديو من الطرق التي تؤثر بشكل مباشر على تجربة المستخدمين عند التفاعل مع التطبيق.dalvik.vm.jittransitionweight
(القيمة التلقائية هيdalvik.vm.jitthreshold
/ 10): أهمية الطريقة الاستدعاء الذي ينتقل بين رمز التجميع والمترجم. يساعد ذلك في تأكد من تجميع الأساليب المتضمنة لتقليل التحولات (وهي باهظ الثمن).
خيارات Dex2oat
تؤثر هذه الخيارات في عملية تجميع المحتوى على الجهاز فقط (تُعرف أيضًا باسم dexopt)، ويؤثر عدد قليل منها أيضًا في dexpreopt، في حين أنّ الخيارات التي تمت مناقشتها في قسم إعداد ROM للنظام أعلاه فقط التأثير على dexpreopt.
خيارات التحكّم في استخدام الموارد:
dalvik.vm.image-dex2oat-threads
/dalvik.vm.image-dex2oat-cpu-set
(حتى Android 11): عدد السلاسل ومجموعة نوى وحدة المعالجة المركزية (CPU) أدناه) لاستخدامها مع صور التمهيد.dalvik.vm.boot-dex2oat-threads
/dalvik.vm.boot-dex2oat-cpu-set
:- (حتى نظام التشغيل Android 11) عدد السلاسل ومجموعة نوى وحدة المعالجة المركزية (CPU) (انظر أدناه) لاستخدامها أثناء وقت التشغيل لكل شيء بخلاف صور التشغيل.
- (اعتبارًا من نظام التشغيل Android 12) عدد سلاسل المحادثات ومجموعة نوى وحدة المعالجة المركزية (CPU)
(انظر أدناه) لاستخدامها أثناء وقت التشغيل لكل شيء، بما في ذلك صور التمهيد.
- وعلى وجه التحديد، يتوافق هذا مع الإصدار Android 14
فئة الأولوية
PRIORITY_BOOT
في خدمة ART.
- وعلى وجه التحديد، يتوافق هذا مع الإصدار Android 14
فئة الأولوية
dalvik.vm.restore-dex2oat-threads
/dalvik.vm.restore-dex2oat-cpu-set
:- (اعتبارًا من نظام التشغيل Android 11، وحتى الإصدار 13 من نظام التشغيل Android) عدد السلاسل ومجموعة نوى وحدة المعالجة المركزية (CPU) (انظر أدناه) التي يمكن استخدامها لاستعادة البيانات من السحابة الإلكترونية النسخ الاحتياطي.
- (اعتبارًا من نظام التشغيل Android 14) عدد سلاسل المحادثات ومجموعة نوى وحدة المعالجة المركزية (CPU)
(انظر أدناه) لاستخدامه مع كل شيء أكثر حساسية لوقت الاستجابة من المعتاد، بما في ذلك
للاستعادة من النسخ الاحتياطي السحابي.
- يتجاوب هذا على وجه التحديد مع فئة الأولوية
PRIORITY_INTERACTIVE_FAST
في خدمة ART
- يتجاوب هذا على وجه التحديد مع فئة الأولوية
dalvik.vm.background-dex2oat-threads
/dalvik.vm.background-dex2oat-cpu-set
(اعتبارًا من نظام التشغيل Android 14): عدد السلاسل ومجموعة نوى وحدة المعالجة المركزية (CPU) أدناه) لاستخدامها في الخلفية.- على وجه التحديد، يتجاوب هذا مع فئة الأولوية
PRIORITY_BACKGROUND
في خدمة ART.
- على وجه التحديد، يتجاوب هذا مع فئة الأولوية
dalvik.vm.dex2oat-threads
/dalvik.vm.dex2oat-cpu-set
: عدد السلاسل ومجموعة نوى وحدة المعالجة المركزية (CPU) التي يمكن استخدامها في أي أغراض أخرى.
يجب تحديد مجموعة من نوى وحدة المعالجة المركزية (CPU) كقائمة مفصولة بفواصل من معرّفات وحدة المعالجة المركزية. على سبيل المثال لتشغيل على وحدة المعالجة المركزية (CPU) بنواة من 0 إلى 3، مع ضبط:
dalvik.vm.dex2oat-cpu-set=0,1,2,3
عند إعداد خصائص تقارب وحدة المعالجة المركزية (CPU)، ننصح بمطابقة الموقع المطابق عدد سلاسل dex2oat لتتطابق مع عدد وحدات المعالجة المركزية (CPU) التي تم اختيارها لتجنّب الذاكرة غير الضرورية ووحدات الإدخال والإخراج التنافس:
dalvik.vm.dex2oat-cpu-set=0,1,2,3 dalvik.vm.dex2oat-threads=4
بالإضافة إلى خصائص النظام أعلاه، يمكنك أيضًا استخدام الملفات الشخصية للمهام للتحكم في لاستخدام موارد dex2oat (راجِع طبقة التجريد لدى Cgroup).
الملفات الشخصية المتاحة للمهام هي:
Dex2OatBackground
(اعتبارًا من نظام التشغيل Android 14) (يتم اكتسابDex2OatBootComplete
تلقائيًا): تتحكّم هذه السياسة في الموارد التي يتم استخدامها في الخلفية.- على وجه التحديد، يتجاوب هذا مع فئة الأولوية
PRIORITY_BACKGROUND
في خدمة ART.
- على وجه التحديد، يتجاوب هذا مع فئة الأولوية
Dex2OatBootComplete
:- (حتى نظام التشغيل Android 13) تتحكّم في المورد الذي تريد استخدامه في كل شيء بعد التشغيل.
- (اعتبارًا من نظام التشغيل Android 14) تتحكّم هذه السياسة في المورد الذي تريد استخدامه في كل العناصر.
بعد التشغيل وليس في الخلفية.
- يتجاوب هذا على وجه التحديد مع فئة الأولوية
PRIORITY_INTERACTIVE_FAST
وPRIORITY_INTERACTIVE
في ART الخدمة.
- يتجاوب هذا على وجه التحديد مع فئة الأولوية
وعند تحديد كلٍّ من خصائص النظام والملفات الشخصية للمهام، يصبح كلاهما ساري المفعول.
خيارات التحكّم في حجم الذاكرة:
dalvik.vm.image-dex2oat-Xms
: حجم الذاكرة الأولية لصور التمهيدdalvik.vm.image-dex2oat-Xmx
: الحد الأقصى لحجم الذاكرة في صور التشغيلdalvik.vm.dex2oat-Xms
: الحجم الأولي لعناصر متعددة في جميع العناصر الأخرى.dalvik.vm.dex2oat-Xmx
: الحد الأقصى لحجم الذاكرة في كل العناصر الأخرى
تتيح لك الخيارات التي تتحكم في الحجم الأولي والأقصى لحجم الذاكرة
يجب عدم تقليل dex2oat
، لأنّه قد يحدّ من
التطبيقات المختلفة.
خيارات التحكم في فلتر برنامج التجميع:
dalvik.vm.image-dex2oat-filter
(حتى الإصدار 11 من نظام Android): عامل تصفية التجميع لصور التمهيد بدءًا من Android 12، كانت أداة التجميع يكون فلتر صور التشغيل دائمًاspeed-profile
ولا يمكن تغييره.dalvik.vm.systemservercompilerfilter
(اعتبارًا من نظام التشغيل Android 13): عامل تصفية المحول البرمجي لخادم النظام. عرضPRODUCT_SYSTEM_SERVER_COMPILER_FILTER
dalvik.vm.systemuicompilerfilter
(اعتبارًا من نظام التشغيل Android 13): عامل تصفية المحول البرمجي لحزمة واجهة مستخدم النظام.dalvik.vm.dex2oat-filter
(حتى الإصدار Android 6): عامل تصفية التجميع لكل شيء آخر.pm.dexopt.<reason>
(اعتبارًا من نظام التشغيل Android 7): عامل تصفية التجميع لكل شيء آخر. عرض ضبط خدمة ART لنظام التشغيل Android 14 عامًا أو أكثر، أو إعداد مدير الحزم لحساب الإصدار 13 من نظام التشغيل Android والإصدارات الأقدم
في ما يلي خيارات أخرى للتحكّم في تجميع كل العناصر ما عدا صور التشغيل:
dalvik.vm.dex2oat-very-large
(اعتبارًا من الإصدار 7.1 من نظام Android): الحد الأدنى لإجمالي حجم ملف dex وحدات البايت لإيقاف التحويل البرمجي AOT.dalvik.vm.dex2oat-swap
(بدءًا من Android 7.1) (الإعداد التلقائي: true): يسمح باستخدام التبديل لـ dex2oat. يمكن أن يساعد ذلك في تجنُّب الأعطال خارج الذاكرة. لاحظ أنه حتى إذا كان هذا الخيار فلن يستخدم dex2oat ملف التبديل إلا في حال استيفاء شروط معيّنة، مثلاً عندما يزيد رقم من ملفات dex كبيرة، وتخضع الشروط للتغيير.dalvik.vm.ps-min-first-save-ms
(اعتبارًا من نظام التشغيل Android 12): أدنى وقت للانتظار قبل أن ينشئ بيئة التشغيل ملفًا شخصيًا للتطبيق، في المرة الأولى أن يتم تشغيل التطبيق.dalvik.vm.ps-min-save-period-ms
(اعتبارًا من نظام التشغيل Android 12): الحد الأدنى من الوقت للانتظار قبل تحديث ملف تعريف التطبيق.dalvik.vm.dex2oat64.enabled
(اعتبارًا من نظام التشغيل Android 11) (الإعداد التلقائي: خطأ): تحديد ما إذا كنت تريد استخدام الإصدار 64 بت من dex2oatdalvik.vm.bgdexopt.new-classes-percent
(اعتبارًا من نظام التشغيل Android 12) (القيمة التلقائية: 20): الحد الأدنى للنسبة المئوية، بين 0 و100، للصفوف الجديدة في ملف شخصي لبدء عملية إعادة التحويل البرمجي. ينطبق فقط على التجميع الموجّه إلى الملف الشخصي (speed-profile
)، ويحدث ذلك عادةً أثناء تحسين الخلفية لاحظ أن هناك أيضًا 50 صفًا جديدًا على الأقل إلى جانب حد النسبة المئوية، ولا يمكن ضبطه.dalvik.vm.bgdexopt.new-methods-percent
(اعتبارًا من نظام التشغيل Android 12) (القيمة التلقائية: 20): النسبة المئوية الدنيا، التي تتراوح بين 0 و100، للطرق الجديدة في ملف شخصي لبدء إعادة التحويل البرمجي. ينطبق فقط على التجميع الموجّه إلى الملف الشخصي (speed-profile
)، ويحدث ذلك عادةً أثناء تحسين الخلفية لاحظ أن هناك أيضًا حد لا يقل عن 100 طريقة جديدة بالإضافة إلى إلى حد النسبة المئوية، ولا يمكن ضبطه.dalvik.vm.dex2oat-max-image-block-size
(اعتبارًا من نظام التشغيل Android 10) (الإعداد التلقائي: 524288) الحد الأقصى لحجم الكتلة الثابتة للصور المضغوطة تنقسم الصورة الكبيرة إلى مجموعة من العناصر الصلبة بحيث لا يزيد حجم الكتلة عن الحد الأقصى للحجم.dalvik.vm.dex2oat-resolve-startup-strings
(اعتبارًا من نظام التشغيل Android 10) (الإعداد التلقائي: صحيح) إذا كانت القيمة هي true، سيؤدي ذلك إلى حلّ dex2oat جميع السلاسل الثابتة التي تتم الإشارة إليها من الطرق التي تحمل علامة "شركة ناشئة" في الملف الشخصي.debug.generate-debug-info
(الإعداد التلقائي: false) تحديد ما إذا كان سيتم إنشاء معلومات تصحيح الأخطاء لتصحيح الأخطاء الأصلية، مثل استرداد تسلسل استدعاء الدوال البرمجية ومعلومات رموز ELF وأقسام الأقزام.dalvik.vm.dex2oat-minidebuginfo
(اعتبارًا من نظام التشغيل Android 9) (الإعداد التلقائي: صحيح) ما إذا كان سيتم إنشاء الحد الأدنى من معلومات تصحيح الأخطاء المضغوطة بواسطة LZMA والضرورية خطوط خلفي للطباعة.
خيارات خدمة ART
بدايةً من نظام التشغيل Android 14، أصبحت تقنية تجميع AOT على الجهاز (المعروفة أيضًا باسم dexopt) تتم معالجتها بواسطة خدمة ART. للحصول على معلومات حول ضبط خدمة ART، يُرجى الاطّلاع على ضبط خدمة ART:خيارات أداة إدارة الحِزم
في الإصدار Android 14، أصبحت تقنية تجميع AOT على الجهاز (المعروفة أيضًا باسم dexopt). التعامل مع مدير الحزمة. لمزيد من المعلومات عن إعداد مدير الحزم لـ dexopt، يُرجى الاطّلاع على ضبط مدير الحزم.إعدادات A/B الخاصة
إعدادات ROM
بدءًا من الإصدار Android 7.0، يمكن للأجهزة استخدام قسمَي نظام لتفعيل التفعيل تحديثات نظام A/B لتوفير حجم قسم النظام، يمكن تثبيت الملفات التي تمت الموافقة عليها مسبقًا في قسم النظام الثاني غير المستخدَم. ثم يتم نسخها إلى قسم البيانات عند التشغيل لأول مرة.
مثال على الاستخدام (في device-common.mk
):
PRODUCT_PACKAGES += \ cppreopts.sh PRODUCT_PROPERTY_OVERRIDES += \ ro.cp_system_other_odex=1
وفي BoardConfig.mk
بالجهاز:
BOARD_USES_SYSTEM_OTHER_ODEX := true
يُرجى ملاحظة أنّ رمز مسار التمهيد ورمز خادم النظام والأجزاء الأساسية الخاصة بالمنتج
يتم تجميع التطبيقات دائمًا في قسم النظام. وبشكلٍ افتراضي،
يتم تجميع التطبيقات في قسم النظام الثاني غير المستخدَم. يمكن أن تظهر فائدة هذا بوضوح أكبر
يتم التحكّم فيه باستخدام SYSTEM_OTHER_ODEX_FILTER
، التي لها قيمة من خلال
القيمة التلقائية لـ:
SYSTEM_OTHER_ODEX_FILTER ?= app/% priv-app/%
ضبط الأداء في الخلفية عبر الهواء
في الأجهزة التي تمكّن A/B، يمكن تجميع التطبيقات في الخلفية قبل إعادة التشغيل باستخدام صورة نظام جديدة. الاطّلاع على تجميع التطبيقات في خلفية لتضمين النص البرمجي للتجميع والبرامج الثنائية في صورة النظام اختياريًا. تشير رسالة الأشكال البيانية يتم التحكم في فلتر التجميع المستخدَم في هذا التجميع من خلال:
pm.dexopt.ab-ota=speed-profile
ننصحك باستخدام speed-profile
للاستفادة من توجيهات الملف الشخصي
التجميع وتوفير مساحة التخزين.
خيارات JDWP
يتم التحكّم في إنشاء سلسلة محادثات البروتوكول السلكي لتصحيح أخطاء Java (JDWP) في إصدارات userdebug من خلال
خاصية نظام واحدة (persist.debug.dalvik.vm.jdwp.enabled
) بشكل تلقائي، يستخدم هذا الموقع
ولم يتم ضبطه، ولا يتم إنشاء سلاسل محادثات JDWP إلا للتطبيقات التي يمكن تصحيح الأخطاء فيها. لتفعيل سلاسل محادثات JDWP لكليهما
التطبيقات التي لا يمكن تصحيح الأخطاء بها وتلك التي لا يمكن تصحيحها، يُرجى ضبط persist.debug.dalvik.vm.jdwp.enabled
.
إلى 1
. يجب إعادة تشغيل الجهاز كي تدخل التغييرات على الموقع حيز التنفيذ.
لتصحيح أخطاء تطبيق لا يمكن تصحيح الأخطاء به في إصدار userdebug، فعِّل JDWP من خلال تشغيل ما يلي :
بالنسبة إلى الأجهزة التي تعمل بالإصدار 13 من نظام التشغيل Android والإصدارات الأقدم، ينشئ بيئة التشغيل JDWP سلاسل محادثات للتطبيقات التي يمكن تصحيح الأخطاء بها وتلك التي لا يمكن تصحيح الأخطاء بها في إصدارات userdebug. وهذا يعني أنه من الممكن إرفاق برنامج تصحيح الأخطاء أو ملف شخصي بأي تطبيق في إصدارات userdebug.adb shell setprop persist.debug.dalvik.vm.jdwp.enabled 1
adb reboot