تساهم "ملفات تعريف الخط الأساس" في تحسين سرعة تنفيذ الرموز البرمجية بنسبة% 30 تقريبًا من عملية التشغيل الأولى من خلال تجنُّب خطوات التفسير والتجميع أثناء التنفيذ (JIT) لمسارات الرموز البرمجية المضمّنة.
من خلال تضمين "ملف تعريف أساسي" في تطبيق أو مكتبة، يمكن وقت تشغيل Android (ART) تحسين مسارات الرموز المحدّدة من خلال عملية الترجمة المسبقة (AOT)، ما يؤدي إلى تحسين الأداء لكل مستخدم جديد ولكل تحديث للتطبيق. تتيح هذه الميزة المعروفة باسم "التحسين المستند إلى الملف الشخصي" (PGO) للتطبيقات تحسين عملية بدء التشغيل وتقليل التشويش في التفاعل وتحسين الأداء العام لوقت التشغيل للمستخدمين منذ عملية الإطلاق الأولى.
تؤدي تحسينات الأداء هذه بشكل مباشر إلى تحسين مقاييس النشاط التجاري، مثل معدّل الاحتفاظ بالمستخدمين والمعاملات والتقييمات. يمكنك الاطّلاع على مزيد من المعلومات حول تأثير الأداء في مقاييس النشاط التجاري من خلال قصص Josh وLyft وTikTok وZomato.
مزايا "ملفات تعريف المرجع"
تساهم "ملفات تعريف خط الأساس" في تحسين سلاسة جميع تفاعلات المستخدمين، مثل بدء تشغيل التطبيق أو التنقّل بين الشاشات أو الانتقال سريعًا في المحتوى، وذلك منذ أول مرة يتم فيها تشغيل التطبيق. من خلال زيادة سرعة التطبيق واستجابته، يمكن أن تؤدي "ملفات تعريف الأداء الأساسي" إلى زيادة عدد المستخدمين النشطين يوميًا وارتفاع متوسط معدل معاودة الزيارة.
تساعد "ملفات تعريف خط الأساس" في توجيه عملية التحسين إلى ما هو أبعد من بدء تشغيل التطبيق من خلال توفير تفاعلات شائعة للمستخدمين تعمل على تحسين وقت تشغيل التطبيق منذ الإطلاق الأول. لا تعتمد عملية الترجمة المسبقة الموجّهة على أجهزة المستخدمين، ويمكن إجراؤها مرة واحدة لكل إصدار على جهاز تطوير بدلاً من جهاز جوّال. من خلال إصدار التطبيقات مع Baseline Profile، تصبح تحسينات التطبيق متاحة بشكل أسرع بكثير من الاعتماد على ملفات تعريف السحابة الإلكترونية وحدها.
عند عدم استخدام "ملف تعريف أساسي"، يتم إما تجميع كل رموز التطبيق في الذاكرة في الوقت المناسب بعد تفسيرها، أو كتابتها في ملف odex
في الخلفية عندما يكون الجهاز غير نشط. بعد تثبيت تطبيق أو تحديثه، سيواجه المستخدمون تجربة غير مثالية
منذ المرة الأولى التي يشغّل فيها التطبيق إلى أن يتم تحسين مسارات الرموز البرمجية الجديدة.
تسجّل العديد من التطبيقات تحسُّنًا في الأداء بنسبة% 30 تقريبًا بعد التحسين.
الملفات الشخصية لبدء التشغيل
تشبه ملفات بدء التشغيل ملفات Baseline Profile، ولكن الفرق هو أنّها تُستخدم في وقت الترجمة البرمجية بدلاً من استخدامها في التحسين على الجهاز. يُستخدم ملف بدء التشغيل لتحسين تنسيق ملف DEX من أجل تقليل أوقات بدء التشغيل.
يتم وضع الرمز المحدّد في ملف بدء التشغيل ضمن ملف classes.dex
الأساسي، ويتم وضع الرموز الأخرى في ملفات DEX منفصلة. ويؤدي ذلك إلى تحسين أوقات بدء التشغيل
من خلال تقليل عدد أخطاء الصفحات أثناء بدء تشغيل التطبيق. لمزيد من المعلومات حول كيفية تحسين أوقات بدء تشغيل التطبيقات من خلال ملفات تعريف بدء التشغيل وتحسينات تنسيق DEX، اطّلِع على مقالة تحسينات تنسيق DEX وملفات تعريف بدء التشغيل.
البدء
لبدء تحسين الأداء في تطبيقك الحالي، اطّلِع على إنشاء ملفات تعريف أساسية.
الحدّ الأدنى للإصدارات الثابتة التي يُنصح بها
توفر سلسلة التبعية إصدارات ثابتة وتطويرية. لإنشاء ملف Baseline Profile وتثبيته، استخدِم الإصدارات المتوافقة التالية أو الإصدارات الأحدث من المكوّن الإضافي لنظام Gradle المتوافق مع Android ومكتبة Macrobenchmark وProfile Installer. هذه التبعيات مطلوبة في أوقات مختلفة وتعمل معًا كسلسلة أدوات لتفعيل "الملف الأساسي" الأمثل.
- مكوّن Android Gradle الإضافي:
com.android.tools.build:8.0.0
- مكتبة Macrobenchmark:
androidx.benchmark:benchmark-macro-junit4:1.3.4
- أداة تثبيت الملف الشخصي:
androidx.profileinstaller:profileinstaller:1.4.1
ننصحك باستخدام أحدث إصدار من AGP لإنشاء ملفات Baseline Profiles وإدارتها. في ما يلي الوظائف الرئيسية التي تتوفّر مع الإصدارات المختلفة من AGP:
إصدار AGP | الميزات |
---|---|
8.4 | تثبّت عمليات تثبيت التطبيقات المحلية للإصدارات غير القابلة للتصحيح باستخدام أداة سطر الأوامر Gradle wrapper أو "استوديو Android" حِزم Baseline Profiles، وبالتالي يكون أداء الإصدار المحلي أقرب إلى أداء الإصدار العلني. لا يؤثّر هذا التعديل في أداء "ملفات Baseline" في الإصدارات العلنية. |
8.3 |
|
8.2 |
|
من نظام التشغيل Android | الحد الأدنى للإصدار المقترَح: استخدِم المكوّن الإضافي Baseline Profile Gradle لإنشاء ملفات Baseline Profiles باستخدام مهمة Gradle واحدة.
|
7.4 |
الحد الأدنى للإصدار المتوافق: يمكن للتطبيقات استخدام "ملفات Baseline"
من المكتبات، وتوفير "ملف Baseline" خاص بها في ملف
src/main/baseline-prof.txt .
|
مثال على إنشاء الملفات الشخصية
في ما يلي مثال على فئة لإنشاء "ملف تعريف أساسي" لبدء تشغيل التطبيق، بالإضافة إلى العديد من أحداث التنقّل والتمرير باستخدام مكتبة Macrobenchmark المقترَحة:
@OptIn(ExperimentalBaselineProfilesApi::class)
class BaselineProfileGenerator {
@get:Rule
val baselineProfileRule = BaselineProfileRule()
@Test
fun appStartupAndUserJourneys() {
baselineProfileRule.collect(packageName = PACKAGE_NAME) {
// App startup journey.
startActivityAndWait()
device.findObject(By.text("COMPOSE LAZYLIST")).clickAndWait(Until.newWindow(), 1_000)
device.findObject(By.res("myLazyColumn")).also {
it.fling(Direction.DOWN)
it.fling(Direction.UP)
}
device.pressBack()
}
}
}
يمكنك الاطّلاع على هذا الرمز في سياقه الكامل ومزيد من التفاصيل كجزء من عيّنات الأداء على GitHub.
مضمون الفيديو
عند استخدام "ملفات تعريف خط الأساس" في تطبيق، يمكنك تضمين رمز بدء تشغيل التطبيق وتفاعلات المستخدم الشائعة، مثل التنقّل بين الشاشات أو الانتقال في الصفحة. يمكنك أيضًا جمع عمليات كاملة، مثل التسجيل أو تسجيل الدخول أو الدفع. يمكن أن تستفيد أي رحلات مستخدمين تعتبرها مهمة من "ملفات تعريف الخط الأساس" من خلال تحسين أداء وقت التشغيل.
إذا كنت تجرّب طرقًا مختلفة لتحسين الأداء، ننصحك بتضمين "ملفات Baseline" في كلتا مجموعتَي التجربة. من خلال إجراء ذلك، يمكنك تسهيل تفسير نتائجك من خلال التأكّد من أنّ جميع المستخدمين يشغّلون الرمز البرمجي المجمَّع بشكل متّسق.
يمكن للمكتبات توفير "ملفات تعريف Baseline" الخاصة بها وشحنها مع الإصدارات لتحسين أداء التطبيق. على سبيل المثال، اطّلِع على قسم "استخدام ملف تعريف أساسي" في أداء Jetpack Compose.
طريقة عمل "ملفات Baseline"
أثناء تطوير تطبيقك أو مكتبتك، ننصحك بتحديد "ملفات تعريف أساسية" لتغطية تفاعلات المستخدمين الشائعة التي يكون فيها وقت العرض أو وقت الاستجابة مهمًا. إليك طريقة عملها:
يتم إنشاء قواعد الملف الشخصي القابلة للقراءة بواسطة الإنسان لتطبيقك وتجميعها في شكل ثنائي في التطبيق. ويمكنك العثور عليها في
assets/dexopt/baseline.prof
. يمكنك بعد ذلك تحميل حِزمة AAB إلى Google Play كالمعتاد.يعالج Google Play الملف الشخصي ويرسله مباشرةً إلى المستخدمين مع حزمة APK. أثناء التثبيت، ينفّذ ART عملية تجميع مسبق (AOT) للطُرق الواردة في الملف الشخصي، ما يؤدي إلى تنفيذ هذه الطرق بشكل أسرع. إذا كان الملف الشخصي يحتوي على طرق مستخدَمة عند تشغيل التطبيق أو أثناء عرض اللقطات، قد يستفيد المستخدم من سرعة تشغيل التطبيق وتقليل التشويش.
يتعاون مسار العمل هذا مع تجميع "ملفات تعريف السحابة" لتحسين الأداء استنادًا إلى الاستخدام الفعلي للتطبيق بمرور الوقت.

ملفات Cloud
توفّر "الملفات الشخصية على السحابة الإلكترونية" شكلاً إضافيًا من PGO، يتم تجميعه من خلال "متجر Google Play" وتوزيعه لتتم عملية التجميع في وقت التثبيت، وذلك بالإضافة إلى "ملفات التعريف الأساسية".
على الرغم من أنّ "ملفات تعريف السحابة الإلكترونية" تستند إلى تفاعلات المستخدمين الحقيقية مع التطبيق، يستغرق توزيعها عدة ساعات أو أيام بعد إجراء تحديث، ما يحدّ من مدى توفّرها. إلى أن يتم توزيع الملفات الشخصية بالكامل، سيكون أداء التطبيق دون المستوى المطلوب بالنسبة إلى مستخدمي التطبيقات الجديدة أو المعدَّلة. بالإضافة إلى ذلك، لا تتوافق "الملفات الشخصية على السحابة الإلكترونية" إلا مع أجهزة Android التي تعمل بالإصدار 9 (المستوى 28 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث، ولا يمكن توسيع نطاقها بشكل جيد إلا للتطبيقات التي لديها قاعدة مستخدمين كبيرة بما يكفي.
سلوك التجميع في جميع إصدارات Android
تستخدم إصدارات منصة Android أساليب مختلفة لتجميع التطبيقات، ولكل منها مفاضلة مرتبطة بالأداء. تتفوّق "ملفات تعريف المرجع" على طرق التجميع السابقة من خلال توفير ملف تعريف لجميع عمليات التثبيت.
إصدار Android | طريقة التحويل البرمجي | أسلوب التحسين |
---|---|---|
5 إلى 6 (المستوى 21 إلى 23 من واجهة برمجة التطبيقات) | Full AOT | يتم تحسين التطبيق بأكمله أثناء التثبيت، ما يؤدي إلى طول مدة الانتظار لاستخدام التطبيق وزيادة استخدام ذاكرة الوصول العشوائي ومساحة التخزين على القرص وزيادة الوقت اللازم لتحميل الرمز من القرص، ما قد يؤدي إلى زيادة مدة بدء التشغيل البارد. |
7 إلى 8.1 (المستوى 24 إلى 27 لواجهة برمجة التطبيقات) | الترجمة المسبقة في الوقت المناسب الجزئية (ملف Baseline Profile) | يتم تثبيت "ملفات تعريف خط الأساس" من خلال
androidx.profileinstaller
في المرة الأولى التي يتم فيها تشغيل التطبيق عندما يحدّد
وحدة التطبيق هذه التبعية. يمكن أن يحسّن ART ذلك بشكل أكبر من خلال إضافة قواعد ملفات شخصية إضافية أثناء استخدام التطبيق، وتجميعها عندما يكون الجهاز غير نشط. يساعد ذلك في تحسين استخدام مساحة القرص وتقليل الوقت اللازم لتحميل الرمز من القرص، ما يؤدي إلى تقليل وقت انتظار التطبيق. |
9 (المستوى 28 لواجهة برمجة التطبيقات) والإصدارات الأحدث | الترجمة المسبقة الكاملة (الأساسية + ملف السحابة الإلكترونية) | يستخدم Play ملفات Baseline Profiles أثناء عمليات تثبيت التطبيقات لتحسين ملفات APK وملفات Cloud Profiles، إذا كانت متاحة. بعد التثبيت، يتم تحميل ملفات ART الشخصية إلى Play وتجميعها، ثم يتم توفيرها كملفات شخصية على السحابة الإلكترونية للمستخدمين الآخرين عند تثبيت التطبيق أو تحديثه. |
المشاكل المعروفة
في ما يلي المشاكل والحلول المحتملة، أو المشاكل التي يتم حاليًا تطوير حلول بديلة لها:
قد يتعذّر إنشاء Baseline Profile بسبب إعدادات الأذونات على بعض الأجهزة، بما في ذلك أجهزة OnePlus. لتجنُّب هذه المشكلة، أوقِف الخيار إيقاف مراقبة الأذونات في إعدادات خيارات المطوّرين.
لا تتوافق عملية إنشاء "ملف تعريف خط الأساس" مع أجهزة Firebase Test Lab، بما في ذلك أجهزة Test Lab التي تديرها Gradle (المشكلة رقم 285187547).
لتوفير "ملفات تعريف أساسية" للمكتبات بنجاح، استخدِم الإصدار 1.2.3 من المكوّن الإضافي Baseline Profile Gradle أو الإصدار 8.3 من "مكوّن Android الإضافي في Gradle" كحد أدنى (المشكلة رقم 313992099).
إذا أنشأت ملفات Baseline Profiles باستخدام الأمر
./gradlew app:generateBaselineProfile
، سيتم أيضًا تشغيل مقاييس الأداء في وحدة الاختبار، وسيتم تجاهل النتائج. في هذه الحالة، يمكنك إنشاء ملفات Baseline Profiles فقط من خلال تنفيذ الأمر مع-P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
. تم حلّ هذه المشكلة في الإصدار 8.2 من "مكوّن Android الإضافي لبرنامج Gradle".لا يؤدي الأمر
./gradlew app:generateBaselineProfile
الذي يتم استخدامه لإنشاء ملفات Baseline Profiles لجميع أنواع الإصدارات إلى إنشاء ملفات Baseline Profiles إلا لنوع إصدار التطبيق. تم حلّ هذه المشكلة في الإصدار 8.1 من "مكوّن Android الإضافي في Gradle".قد لا تتيح قنوات توزيع التطبيقات غير التابعة لـ "متجر Google Play" استخدام Baseline Profiles عند التثبيت. لن تظهر مزايا التطبيقات المثبَّتة من خلال هذه القنوات للمستخدمين إلا بعد تشغيل dexopt في الخلفية، وهو ما يحدث غالبًا أثناء الليل.
لا تتيح ميزة مشاركة التطبيقات مع الفريق الداخلي على "متجر Play" استخدام "ملفات تعريف Baseline"، ولكن يتيحها مسار الاختبار الداخلي.
يمكن أن تتداخل تحسينات البطارية على بعض الأجهزة، مثل أجهزة Huawei، مع عملية تثبيت الملف الشخصي. للمساعدة في ضمان تثبيت ملفاتك الشخصية بفعالية، أوقِف أي تحسينات للبطارية في الأجهزة التي تستخدمها لقياس الأداء.
مراجع إضافية
أفلام مُقترَحة لك
- ملاحظة: يتم عرض نص الرابط عندما تكون JavaScript غير مفعّلة
- إنشاء ملفات Baseline Profiles {:#creating-profile-rules}
- إنشاء ملفات Baseline Profiles وقياسها بدون Macrobenchmark
- تحسينات تنسيق DEX وملفات تعريف بدء التشغيل