تحسّن الملفات الشخصية الأساسية سرعة تنفيذ الرموز بنسبة% 30 تقريبًا بعد عملية الإطلاق الأولى، وذلك من خلال تجنُّب التفسير وخطوات التجميع في الوقت المناسب (JIT) لمسارات الرموز المضمَّنة.
من خلال شحن "الملف الشخصي الأساسي" في تطبيق أو مكتبة، يمكن لنظام Android Runtime (ART) تحسين مسارات الرموز المحدّدة من خلال تجميع البيانات المجمّعة مسبقًا (AOT)، ما يؤدي إلى تحسين الأداء لكل مستخدم جديد وكل تحديث للتطبيق. وتتيح ميزة "التحسين الموجَّه من خلال ملف التعريف" (PGO) للتطبيقات تحسين بدء التشغيل وتقليل مشاكل التفاعل وتحسين الأداء العام للمستخدمين في وقت التشغيل منذ الإطلاق الأول.
تؤدي تحسينات الأداء هذه بشكل مباشر إلى تحسين مقاييس الأعمال مثل الحفاظ على المستخدمين والمعاملات والتقييمات. يمكنك الاطّلاع على مزيد من المعلومات عن كيفية تأثير الأداء في مقاييس النشاط التجاري في قصص من Josh وLyft وTikTok وZomato.
مزايا الملفات الشخصية المرجعية
تساعد الملفات الشخصية المرجعية على جعل جميع تفاعلات المستخدمين، مثل بدء تشغيل التطبيق أو التنقل بين الشاشات أو التنقل في المحتوى، أكثر سلاسة من أول مرة يتم تشغيلها فيها. ومن خلال زيادة سرعة التطبيق واستجابته، يمكن أن تؤدي الملفات الشخصية المرجعية إلى جذب المزيد من المستخدمين النشطين يوميًا ومتوسط أعلى لمعدل الزيارات المتكررة.
تساعد الملفات الشخصية الأساسية في توجيه عملية التحسين خارج نطاق بدء تشغيل التطبيق من خلال توفير تفاعلات شائعة بين المستخدمين تعمل على تحسين وقت تشغيل التطبيق منذ إطلاقه لأول مرة. ولا يعتمد التجميع الإرشادي AOT على أجهزة المستخدمين ويمكن تنفيذه مرة واحدة لكل إصدار على جهاز التطوير بدلاً من جهاز محمول. من خلال شحن الإصدارات باستخدام ملف شخصي أساسي، تصبح تحسينات التطبيقات متاحة بشكلٍ أسرع بكثير مقارنةً بالاعتماد على الملفات الشخصية في Cloud وحدها.
في حال عدم استخدام "الملف الشخصي الأساسي"، يتم تجميع كل رموز التطبيق في الذاكرة
بعد تفسيرها، أو كتابتها في ملف odex
في الخلفية عندما يكون
الجهاز غير نشِط لفترة قصيرة. بعد تثبيت تطبيق أو تحديثه، يحصل المستخدمون على تجربة دون المستوى المطلوب من أول مرة يتم فيها تشغيل التطبيق حتى يتم تحسين مسارات التعليمات البرمجية الجديدة.
تقيس العديد من التطبيقات عمليات تعزيز الأداء بنسبة% 30 تقريبًا بعد إجراء تحسين.
الملفات الشخصية للشركات الناشئة
تشبه الملفات الشخصية للشركات الناشئة الملفات الشخصية الأساسية، لكن الاختلاف بينها هو
أنها يتم استخدامها في وقت التجميع بدلاً من التحسين على الجهاز فقط. يُستخدم الملف الشخصي لبدء
التشغيل لتحسين تخطيط ملف DEX لتحسين أوقات بدء التشغيل.
يتم وضع الرمز المحدّد في الملف الشخصي لبدء التشغيل في ملف classes.dex
الأساسي، ويتم وضع أي رمز آخر في ملفات DEX منفصلة. يؤدي ذلك إلى تحسين أوقات بدء التشغيل عن طريق
تقليل عدد أخطاء الصفحة أثناء بدء تشغيل التطبيق. لمعرفة المزيد من المعلومات حول
كيفية الاستفادة من الملفات الشخصية للشركات الناشئة وعمليات تحسين تنسيقات DEX في تحسين أوقات بدء تشغيل التطبيقات،
يمكنك الاطّلاع على عمليات تحسين تنسيقات DDEX والملفات الشخصية للشركات الناشئة.
البدء
للبدء في تحسين الأداء في تطبيقك الحالي، راجِع إنشاء ملفات شخصية أساسية.
الحد الأدنى المقترَح للإصدارات الثابتة
توفر سلسلة التبعية إصدارات إصدار ثابتة وتطورية. لإنشاء ملف شخصي أساسي وتثبيته، عليك استخدام الإصدارات المتوافقة التالية أو الإصدارات الأحدث من مكوّن Android Gradle الإضافي ومكتبة مقياس أداء الماكرو وأداة تثبيت الملف الشخصي. هذه التبعيات مطلوبة في أوقات مختلفة وتعمل معًا كسلسلة أدوات لتمكين ملف شخصي أساسي أمثل.
- المكوّن الإضافي لنظام Gradle المتوافق مع Android:
com.android.tools.build:8.0.0
- مكتبة مقاييس الأداء الكلية:
androidx.benchmark:benchmark-macro-junit4:1.2.2
- أداة تثبيت الملف الشخصي:
androidx.profileinstaller:profileinstaller:1.3.1
ننصحك باستخدام أحدث إصدار من AGP لإنشاء الملفات الشخصية الأساسية وإدارتها. فيما يلي الوظائف الرئيسية التي تأتي مع إصدارات مختلفة من AGP:
إصدار AGP | الميزات |
---|---|
8.3 |
|
8.2 |
|
من نظام التشغيل Android | الحد الأدنى للإصدار المقترَح: يمكنك استخدام المكوّن الإضافي Baseline Profile Gradle لإنشاء "ملفات شخصية أساسية" من خلال مهمة Gradle واحدة.
|
7.4 |
الحد الأدنى للإصدار المتوافق: يمكن للتطبيقات استخدام "الملفات الشخصية الأساسية" من المكتبات وتوفير "الملف الشخصي الأساسي" الخاص بها في
ملف src/main/baseline-prof.txt .
|
مثال لإنشاء ملف شخصي
في ما يلي مثال على صف لإنشاء ملف شخصي أساسي لبدء تشغيل تطبيق، بالإضافة إلى العديد من أحداث التنقّل والتمرير باستخدام مكتبة مقياس الأداء الفائق المقترَحة:
@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.
مضمون الفيديو
عند استخدام الملفات الشخصية الأساسية في أحد التطبيقات، يمكنك تضمين رمز بدء تشغيل التطبيق وتفاعلات المستخدمين الشائعة مثل التنقل بين الشاشات أو التمرير. يمكنك أيضًا جمع مسارات كاملة مثل التسجيل أو تسجيل الدخول أو الدفع. يمكن لأي رحلات مستخدم تعتبرها بالغة الأهمية أن تستفيد من الملفات الشخصية الأساسية من خلال تحسين أداء وقت التشغيل.
إذا كنت تختبر أساليب مختلفة لتحسين الأداء، ننصحك بتضمين الملفات الشخصية الأساسية في كلا مجموعتَي التجربة. من خلال القيام بذلك، يمكنك تسهيل تفسير نتائجك عن طريق التأكد من أن جميع المستخدمين يقومون بتشغيل التعليمات البرمجية المجمّعة بشكل متسق.
يمكن للمكتبات توفير ملفاتها الشخصية الأساسية وشحنها مع إصدارات لتحسين أداء التطبيقات. مثلاً، يمكنك الاطّلاع على قسم استخدام الملف الشخصي الأساسي في أداء Jetpack Compose.
طريقة عمل الملفات الشخصية المرجعية
أثناء تطوير تطبيقك أو مكتبتك، ننصحك بتحديد الملفات الشخصية الأساسية لتغطية تفاعلات المستخدمين الشائعة التي يكون فيها وقت العرض ووقت الاستجابة مهمًا. وإليك آلية عملها:
يتم إنشاء قواعد الملف الشخصي التي يمكن للمستخدمين قراءتها لتطبيقك وتجميعها في شكل ثنائي في التطبيق. يمكنك العثور عليها في
assets/dexopt/baseline.prof
. ويمكنك بعد ذلك تحميل تنسيق AAB إلى Google Play كالمعتاد.يعالج Google Play الملف الشخصي ويشحنه إلى المستخدمين مباشرةً مع ملف APK. أثناء عملية التثبيت، يُجري ART تجميع AOT للطرق في الملف الشخصي، مما يؤدي إلى تنفيذ هذه الطرق بشكل أسرع. إذا كان الملف الشخصي يحتوي على طرق مستخدمة في تشغيل التطبيق أو أثناء عرض الإطار، قد يواجه المستخدم وقت تشغيل أسرع مع تقليل البيانات غير الضرورية.
يتعاون هذا التدفق مع تجميع الملفات الشخصية في السحابة الإلكترونية لضبط الأداء استنادًا إلى الاستخدام الفعلي للتطبيق بمرور الوقت.

الملفات الشخصية في السحابة الإلكترونية
تقدّم الملفات الشخصية في السحابة الإلكترونية شكلاً إضافيًا من PGO يتم تجميعه من خلال "متجر Google Play" وتوزيعه بهدف تجميع وقت التثبيت، جنبًا إلى جنب مع "الملفات الشخصية الأساسية".
في حين تعمل الملفات الشخصية في السحابة الإلكترونية على تفاعلات المستخدمين الواقعية مع التطبيق، فإنها تستغرق عدة ساعات إلى أيام بعد توزيع التحديث، مما يحد من توافرها. إلى أن يتم توزيع الملفات الشخصية بالكامل، يكون أداء التطبيق دون المستوى المطلوب لمستخدمي التطبيقات الجديدة أو المُحدَّثة. علاوة على ذلك، لا تتوافق الملفات الشخصية في السحابة الإلكترونية إلا مع أجهزة Android التي تعمل بالإصدار 9 من نظام التشغيل Android (المستوى 28 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث، ويتم ضبطها بشكل جيد فقط للتطبيقات التي لديها قاعدة مستخدمين كبيرة بما يكفي.
سلوك تجميع البيانات على مختلف إصدارات Android
تستخدم إصدارات "نظام Android الأساسي" أساليب مختلفة لتجميع التطبيقات، ولكل منها نهجًا مماثلاً في الأداء. تتحسن الملفات الشخصية الأساسية على طرق التجميع السابقة من خلال توفير ملف شخصي لجميع عمليات التثبيت.
إصدار Android | طريقة التحويل البرمجي | منهج التحسين |
---|---|---|
من 5 إلى 6 (مستوى واجهة برمجة التطبيقات من 21 إلى 23) | AOT الكامل | يتم تحسين التطبيق بأكمله أثناء التثبيت، ما يؤدي إلى إطالة فترة الانتظار لاستخدام التطبيق، وزيادة استخدام ذاكرة الوصول العشوائي ومساحة القرص، وإطالة وقت تحميل الرموز من القرص، ما قد يؤدي إلى زيادة أوقات بدء التشغيل على البارد. |
من 7 إلى 8.1 (مستوى واجهة برمجة التطبيقات المستوى 24 إلى 27) | جزء من AOT (الملف الشخصي المرجعي) | يتم تثبيت الملفات الشخصية المرجعية
عن طريق
"androidx.profileinstaller "
عند التشغيل لأول مرة عندما
تحدّد وحدة التطبيق هذه
التبعية. ويمكن لـ ART تحسين ذلك بشكل أكبر عن طريق إضافة قواعد إضافية للملف الشخصي أثناء استخدام التطبيق، وتجميعها عندما يكون الجهاز في وضع الخمول. يؤدي ذلك إلى تحسين مساحة القرص ووقت تحميل الرمز من القرص، وبالتالي تقليل وقت انتظار التطبيق. |
9 (المستوى 28 من واجهة برمجة التطبيقات) وأعلى | جزء من AOT (خط الأساس + الملف الشخصي للسحابة الإلكترونية) | يستخدم Play الملفات الشخصية الأساسية أثناء عمليات تثبيت التطبيق لتحسين ملفات APK والملفات الشخصية للسحابة الإلكترونية، إن توفّرت. بعد التثبيت، يتم تحميل ملفات ART الشخصية إلى Play وتجميعها ثم تقديمها كملفات شخصية على السحابة الإلكترونية إلى المستخدمين الآخرين عند تثبيت التطبيق أو تحديثه. |
حلول للمشاكل المحتملة
في ما يلي المشاكل والحلول المحتملة أو تلك التي يتوفر لها تطوير مستمر للحلول البديلة:
ولا يتم تضمين الصفوف غير المكتملة في "الملفات الشخصية الأساسية". قد يتم تفويت الصفوف غير المكتملة لأنّه تتم إضافتها إلى حزمة APK النهائية من خلال عملية إنشاء منفصلة لا تتوافق مع الملفات الشخصية الأساسية. تم إصلاح هذه المشكلة في Android Studio Iguana Canary 8 (المشكلة رقم 283947063).
لا يُسمح بإعادة ضبط ذاكرات التخزين المؤقت للملف الشخصي لـ ART في إصدارات
user
(غير المستندة إلى الجذر). للتغلب على هذا الأمر، يتضمنandroidx.benchmark:benchmark-macro-junit4:1.1.0
حلاً يعيد تثبيت التطبيق خلال قياس الأداء (المشكلة) .لا تثبِّت أداة التعريف في "استوديو Android" الملفات الشخصية الأساسية عند تحليل بيانات التطبيق (المشكلة).
لا تتيح الأنظمة التي لا تستند إلى تصميم Gradle، مثل Bazel أو Buck، تجميع الملفات الشخصية الأساسية في ملفات APK الناتج عن ذلك.
قد لا تتيح قنوات توزيع التطبيقات التي لا تتبع "متجر Google Play" استخدام الملفات الشخصية المرجعية عند التثبيت. ولا يرى مستخدمو التطبيقات التي تم تثبيتها من خلال هذه القنوات المزايا إلى أن يتم تشغيل الترميز في الخلفية، وهو ما قد يحدث بين عشية وضحاها.
يمكن أن تتداخل تحسينات البطارية مع تثبيت الملف الشخصي. للمساعدة في ضمان تثبيت الملفات الشخصية بشكل فعال، أوقف أي تحسينات للبطارية في أجهزة قياس الأداء.
قد تختلف تحسينات الأداء بين مقاييس الأداء والإنتاج. ويحدث ذلك لأنّ مقاييس الأداء المحلية تقيس مستوى الأداء عندما تكون "الملفات الشخصية الأساسية" مفعَّلة أو غير مفعَّلة. في تطبيقات الإنتاج، يزداد القياس عند إضافة جزء جديد من التطبيق إلى "الملف الشخصي الأساسي"، حيث يتم تحليل الأجزاء بالفعل من خلال المكتبات المساهمة.
مراجع إضافية
أفلام مُقترَحة لك
- ملاحظة: يتم عرض نص الرابط عند إيقاف JavaScript.
- إنشاء ملفات شخصية أساسية {:#create-profile-rules}
- إنشاء الملفات التجارية المرجعية وقياسها بدون استخدام مقاييس الأداء الكلية
- تحسينات تنسيق DEX والملفات الشخصية للشركات الناشئة