نظرة عامة على الملفات الشخصية الأساسية

تعمل الملفات الشخصية الأساسية على تحسين سرعة تنفيذ الرمز البرمجي بنسبة %30 تقريبًا عن الإطلاق الأول، وذلك من خلال تجنُّب خطوات التفسير والتجميع أثناء التنفيذ (JIT) لمسار الرمز البرمجي المضمّن.

من خلال إضافة ملف مرجعي في تطبيق أو مكتبة، يمكن لخيار وقت تشغيل Android (ART) تحسين مسارات الرموز البرمجية من خلال طريقة تجميع البيانات المسبقة التحديد (AOT)، ما يؤدي إلى تحسين الأداء لكل مستخدم جديد وكل تحديث للتطبيق. يتيح أسلوب "التحسين بالاستناد إلى الملف الشخصي" (PGO) للتطبيقات تحسين سرعة بدء التشغيل والحد من الارتباك في التفاعل وتحسين الأداء العام أثناء التشغيل للمستخدمين منذ أول عملية تشغيل.

تؤدي تحسينات الأداء هذه مباشرةً إلى تحسين مقاييس النشاط التجاري، مثل الحفاظ على المستخدمين والمعاملات والتقييمات. يمكنك الاطّلاع على مزيد من المعلومات عن كيفية تأثير الأداء في مقاييس النشاط التجاري من خلال قصص من Josh، Lyft، وTikTok، Zomato.

مزايا الملفات الشخصية الأساسية

تجعل "الملفات الشخصية الأساسية" جميع تفاعلات المستخدمين أكثر سلاسة من المرة الأولى التي يتم فيها تشغيلها، مثل بدء تشغيل التطبيق أو التنقل بين الشاشات أو الانتقال في المحتوى. فمن خلال زيادة سرعة التطبيق واستجابته، يمكن أن تؤدي الملفات الشخصية الأساسية إلى جذب المزيد من المستخدمين النشطين يوميًا وارتفاع متوسط معدّل الزيارات.

تساعد ملفات الأداء الأساسية في توجيه التحسين إلى ما بعد بدء تشغيل التطبيق من خلال توفير تفاعلات مستخدمين شائعة تحسّن وقت تشغيل التطبيق من أول عملية تشغيل. لا يعتمد تجميع AOT الإرشادي على أجهزة المستخدم ويمكن إجرائه مرة واحدة لكل إصدار على جهاز تطوير بدلاً من جهاز محمول. من خلال إصدارات الشحن التي تتضمّن ملفًا مرجعيًا، تصبح تحسينات التطبيقات متاحة بشكل أسرع بكثير من الاعتماد على الملفات الشخصية على السحابة الإلكترونية وحدها.

عند عدم استخدام ملف قاعدة بيانات، يتم تجميع كل رمز التطبيق باستخدام تقنية JIT في الذاكرة بعد تفسيره، أو يتم كتابته في ملف odex في الخلفية عندما يكون الجهاز في وضع السكون. بعد تثبيت تطبيق أو تحديثه، يحصل المستخدمون على تجربة غير مثالية من أوّل مرة يشغّلون فيها التطبيق إلى أن يتم تحسين مسارات الرموز البرمجية الجديدة. تقيس العديد من التطبيقات زيادات الأداء بحوالي 30% بعد إجراء التحسين.

الملفات الشخصية للشركات الناشئة

تشبه الملفات الشخصية لبدء التشغيل الملفات الشخصية للمرجع، ولكن الفرق هو أنّه يتم استخدامها في وقت الترجمة بدلاً من التحسين على الجهاز. يتم استخدام ملف ملف بدء التشغيل لتحسين تنسيق ملف DEX لتحسين أوقات بدء التشغيل. يتم وضع الرمز المحدَّد في ملف بدء التشغيل الأساسي classes.dex ، ويتم وضع الرمز الآخر في ملفات DEX منفصلة. ويؤدي ذلك إلى تحسين أوقات بدء التشغيل من خلال تقليل عدد أخطاء الصفحة أثناء بدء تشغيل التطبيق. للاطّلاع على مزيد من المعلومات عن كيفية تحسين ملفات بدء التشغيل وتنسيق DEX لتحسين أوقات بدء تشغيل التطبيقات، اطّلِع على تحسينات تنسيق DEX وملفات بدء التشغيل.

البدء

لبدء تحسين الأداء في تطبيقك الحالي، اطّلِع على مقالة إنشاء ملف شخصي أساسي .

توفر سلسلة التبعية إصدارات إصدار مستقرة وتطويرها. لإنشاء ملف شخصي أساسي وتثبيته، استخدِم الإصدارات المتوافقة التالية أو الإصدارات الأحدث من المكوّن الإضافي لنظام Gradle المتوافق مع Android ومكتبة وحدات قياس الأداء الشاملة و"أداة تثبيت الملف الشخصي". تكون هذه التبعيات مطلوبة في أوقات مختلفة وتعمل معًا كسلسلة أدوات لتمكين "ملف تعريف أساسي" مثالي.

  • المكوّن الإضافي لنظام Gradle المتوافق مع Android: com.android.tools.build:8.0.0
  • مكتبة قياس الأداء على مستوى التطبيق: androidx.benchmark:benchmark-macro-junit4:1.3.3
  • أداة تثبيت الملف الشخصي: androidx.profileinstaller:profileinstaller:1.4.1

ننصحك باستخدام أحدث إصدار من AGP لإنشاء وإدارة الملفات الشخصية الأساسية. فيما يلي الوظائف الرئيسية التي تأتي مع إصدارات مختلفة من AGP:

إصدار AGP الميزات
8.4 عمليات تثبيت التطبيقات المحلية للإصدارات غير القابلة لتصحيح الأخطاء باستخدام أداة سطر الأوامر لملف Gradle المُلفِّف أو "استوديو Android" لإنشاء ملفات الأداء الأساسية، لكي يكون أداء إصدار الإصدار على الجهاز مطابقًا بشكلٍ أكبر للإصدار العلني لا يؤثّر هذا التعديل في أداء الملفات الأساسية في مرحلة الإنتاج.
8.3
  • إتاحة دليل مجموعة المصادر بالكامل (وحدات المكتبة): يمكنك الآن تحديد ملفات مصدر متعددة للملف الشخصي الأساسي واستخدام ملف src/free/generated/baselineProfiles/baseline-prof1.txt وغيرها من الأدلة المتوافقة مع الصيغ لوحدات المكتبة ووحدات التطبيق.
  • وتتضمّن الملفات الشخصية الأساسية فئات غير متوافقة مع المحتوى.
8.2
  • إعادة كتابة القواعد باستخدام R8: يمكن أن تحوِّل أداتا D8 وR8 قواعد Baseline وStartup Profile القابلة للقراءة من قِبل البشر لتسجيل جميع القواعد التي تحتاج إليها لتحسين أداء التطبيق بالكامل. تؤدي هذه السياسة إلى زيادة تغطية "الملف الشخصي الأساسي" للطُرق بنسبة% 30 تقريبًا، وزيادة أداء التطبيق بنسبة %15 تقريبًا.
  • ملفات تعريف التطبيقات المبتدئة: يمكنك إنشاء هذا النوع الجديد من الملفات الأساسية لتحديد تنسيق الرمز البرمجي ضمن DEX. يرفع مستوى أداء بدء التشغيل بنسبة إضافية تبلغ 15% تقريبًا، أو أكثر بكثير في التطبيقات الكبيرة.
من نظام التشغيل Android الحد الأدنى للإصدار المُقترَح: استخدِم المكوّن الإضافي Gradle Baseline Profile لإنشاء ملفات Baseline Profile باستخدام مهمة Gradle واحدة.
  • إتاحة دليل مجموعة المصادر الكاملة (وحدات التطبيق): يمكنك الإفصاح عن ملفات مصدر متعددة لملف Baseline Profile واستخدام الأدلة التي تتضمّن معلومات عن الأسعار المتغيرة، مثل src/free/generated/baselineProfiles/baseline-prof1.txt.
7.4 الحد الأدنى للإصدار المتوافق: يمكن للتطبيقات استخدام الملفات الأساسية من المكتبات، وتوفير ملفاتها الأساسية الخاصة بها فيملف src/main/baseline-prof.txt.
  • ويتم تجميع الملفات الشخصية الأساسية بشكل صحيح عند إنشاء حِزمة APK من حِزمة تطبيق (المشكلة رقم 230361284).
  • بالنسبة إلى التطبيقات التي تحتوي على أكثر من ملف .dex واحد، يتم حزم ملفات Baseline بشكل صحيح للملف الأساسي .dex

مثال على إنشاء الملف الشخصي

في ما يلي مثال على فئة لإنشاء ملف تعريف أساسي لبدء تشغيل التطبيق، بالإضافة إلى العديد من أحداث التنقّل والانتقال باستخدام مكتبة 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.

مضمون الفيديو

عند استخدام "الملفات الشخصية الأساسية" في أحد التطبيقات، يمكنك تضمين رمز بدء تشغيل التطبيق وتفاعلات المستخدمين الشائعة، مثل التنقّل بين الشاشات أو التمرير. يمكنك أيضًا جمع مسارات كاملة، مثل التسجيل أو تسجيل الدخول أو الدفع. يمكن أن تستفيد أي تجارب مستخدمين ترى أنّها مهمة من "الملفات الشخصية الأساسية" من خلال تحسين أدائها أثناء التشغيل.

إذا كنت تختبر طرقًا مختلفة لتحسين الأداء، ننصحك بتضمين الملفات الشخصية الأساسية لكلتا مجموعتَي التجربة. من خلال تنفيذ هذا الإجراء، يمكنك تسهيل تفسير النتائج من خلال التأكّد من أنّ جميع المستخدِمين يشغّلون باستمرار الرمز البرمجي المجمّع.

يمكن للمكتبات توفير ملفات تعريف مرجعية خاصة بها وإرسالها مع الإصدارات لتحسين أداء التطبيق. مثلاً، راجِع استخدام القسم "استخدام الملف الشخصي الأساسي" في أداء Jetpack Compose.

طريقة عمل الملفات الشخصية غير المرجعية

أثناء تطوير تطبيقك أو مكتبتك، ننصحك بتحديد الملفات الشخصية الأساسية لمحاولة تغطية تفاعلات المستخدمين الشائعة التي يكون فيها وقت العرض أو وقت الاستجابة مهمّين. إليك طريقة عملها:

  1. يتم إنشاء قواعد الملف الشخصي التي يمكن للمستخدمين قراءتها لتطبيقك، ويتم تجميعها في نموذج ثنائي في التطبيق. يمكنك العثور عليها في assets/dexopt/baseline.prof. ويمكنك بعد ذلك تحميل تنسيق AAB إلى Google Play كالمعتاد.

  2. يعالج Google Play الملف الشخصي ويرسله مباشرةً إلى المستخدمين مع ملف APK. أثناء التثبيت، يُجري ART تجميع AOT للطرق الموجودة في الملف الشخصي، مما يؤدي إلى تنفيذ هذه الطرق بشكل أسرع. إذا كان الملف الشخصي يحتوي على طُرق مستخدَمة في تشغيل التطبيق أو أثناء عرض اللقطات، قد يلاحظ المستخدم تسريعًا في أوقات التشغيل وانخفاضًا في الارتباك.

  3. ويتعاون هذا المسار مع تجميع الملفات الشخصية في السحابة الإلكترونية لتحسين الأداء استنادًا إلى الاستخدام الفعلي للتطبيق بمرور الوقت.

الشكل 1. يوضّح هذا المخطّط البياني سير عمل الملف الشخصي الأساسي بدءًا من التحميل ووصولاً إلى تسليمه للمستخدم النهائي، وكيفية ارتباط سير العمل هذا بملفات الاعتماد في السحابة الإلكترونية.

الملفات الشخصية في السحابة الإلكترونية

توفّر "ملفات الأداء في السحابة الإلكترونية" شكلاً إضافيًا من ميزة "تحسين الأداء أثناء التنقل"، حيث يتم تجميعها من خلال "متجر Google Play" وتوزيعها للترجمة في وقت التثبيت، إلى جانب "ملفّات الأداء الأساسية".

على الرغم من أنّ الملفات التجارية على السحابة الإلكترونية تستند إلى تفاعلات المستخدمين الفعلية مع التطبيق، فإنه يستغرق توزيعها عدة ساعات إلى أيام بعد إجراء التحديث، ما يحدّ من مدى توفّرها. وحتى يتم توزيع الملفات الشخصية بالكامل، يكون أداء التطبيق دون المستوى بالنسبة لمستخدمي التطبيقات الجديدة أو المحدثة. بالإضافة إلى ذلك، لا تتوافق ميزة "ملف الظل على السحابة الإلكترونية" إلا مع أجهزة Android التي تعمل بالإصدار 9 (المستوى 28 لواجهة برمجة التطبيقات) أو إصدارًا أحدث، ولا يمكن توسيع نطاقها بشكل جيد إلا للتطبيقات التي تضم قاعدة مستخدمين كبيرة بما يكفي.

سلوك التجميع في إصدارات Android

تستخدم إصدارات نظام Android الأساسي مناهج مختلفة لتجميع التطبيقات، ولكل منها مقايضة مقابل الأداء. تُحسّن الملفات الشخصية المرجعية استنادًا إلى طرق التجميع السابقة من خلال توفير ملف شخصي لجميع عمليات التثبيت.

إصدار Android طريقة التجميع منهج التحسين
من 5 إلى 6 (مستوى واجهة برمجة التطبيقات 21 حتى 23) المعالجة الكاملة للوقت المتقدّم يتم تحسين التطبيق بالكامل أثناء التثبيت، ما يؤدي بدوره إلى زيادة وقت الانتظار لاستخدام التطبيق وزيادة استخدام ذاكرة الوصول العشوائي ومساحة القرص، وتحميل الرمز البرمجي من القرص في وقت أطول، ما قد يؤدي بدوره إلى زيادة مدة بدء التشغيل بدون ذاكرة مُسبقة.
من 7 إلى 8.1 (المستوى 24 إلى 27 لواجهة برمجة التطبيقات) الجزء الأساسي من AOT (الملف الشخصي) يتم تثبيت الملفات الشخصية الأساسية من قِبل androidx.profileinstaller في التشغيل الأول عندما تحدِّد ملف وحدة التطبيق هذا الاعتماد. يمكن أن تحسِّن أداة ART من ذلك بشكلٍ أكبر من خلال إضافة قواعد ملف شخصي إضافية أثناء استخدام التطبيق و compiling عند عدم استخدام الجهاز. يؤدي ذلك إلى تحسين مساحة القرص ووقت تحميل التعليمات البرمجية من القرص، وبالتالي تقليل وقت انتظار التطبيق.
الإصدار 9 (المستوى 28 لواجهة برمجة التطبيقات) والإصدارات الأحدث الجزء الأساسي من AOT (الخط المرجعي + الملف الشخصي على السحابة الإلكترونية) يستخدم Play "الملفات الشخصية الأساسية" أثناء عمليات تثبيت التطبيقات بهدف تحسين الملفات الشخصية لـ APK و"سحابة Google"، إذا كانت متاحة. بعد التثبيت، يتم تحميل ملفات تعريف ART إلى Play وتجميعها ثم تقديمها كملفات تعريف في السحابة الإلكترونية للمستخدمين الآخرين عند تثبيتهم للتطبيق أو تحديثه.

المشاكل المعروفة

في ما يلي بعض المشكلات والحلول المحتملة، أو المشكلات التي تحتاج إلى تطورات مستمرة لإيجاد حلول بديلة لها:

  • قد يتعذّر إنشاء الملف الشخصي الأساسي بسبب إعدادات الأذونات على بعض الأجهزة، بما في ذلك أجهزة OnePlus. لحلّ هذه المشكلة، أوقِف خيار إيقاف مراقبة الأذونات في إعدادات خيارات المطوّرين .

  • لا تتوفّر إمكانية إنشاء الملف الشخصي الأساسي على أجهزة مركز الاختبار الافتراضي لمنصة Firebase، بما في ذلك أجهزة مركز الاختبار الافتراضي التي تديرها Gradle (المشكلة رقم 285187547).

  • لتوفير الملفات الشخصية المرجعية للمكتبات بنجاح، يمكنك استخدام المكوّن الإضافي Gradle للملف الشخصي الأساسي 1.2.3 أو AGP 8.3، على الأقل (المشكلة رقم 313992099).

  • في حال إنشاء "ملفات شخصية أساسية" باستخدام الأمر "./gradlew app:generateBaselineProfile"، سيتم أيضًا تشغيل مقاييس الأداء في وحدة الاختبار، ويتم تجاهل النتائج. في هذه الحالة، يمكنك إنشاء الملفات الشخصية الأساسية فقط من خلال تنفيذ الأمر مع -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile. تم حلّ هذه المشكلة في الإصدار 8.2 من AGP.

  • يؤدي الأمر الخاص بإنشاء ملفات شخصية أساسية لجميع أنواع الإصدارات، ./gradlew app:generateBaselineProfile، إلى إنشاء الملفات الشخصية الأساسية فقط لنوع إصدار الإصدار. تم حلّ هذه المشكلة في الإصدار 8.1 من AGP.

  • قد لا تتيح قنوات توزيع التطبيقات غير التابعة لـ "متجر Google Play" استخدام الملفات الشخصية المرجعية عند التثبيت. ولا يرى مستخدمو التطبيقات المثبتة من خلال هذه القنوات المزايا إلى أن يتم تشغيل الاستخدام في الخلفية، وهو ما يحدث على الأرجح بين عشية وضحاها.

  • لا تتيح ميزة مشاركة التطبيقات مع الفريق الداخلي في "متجر Play" استخدام الملفات الشخصية الأساسية، ولكن يمكن استخدامها في مسار الاختبار الداخلي .

  • قد تتداخل تحسينات البطارية على بعض الأجهزة، مثل أجهزة Huawei، مع تثبيت الملف الشخصي. للمساعدة في ضمان تثبيت ملفاتك الشخصية بفعالية، أوقِف أي تحسينات للبطارية في الأجهزة التي يتم قياس أدائها.

مصادر إضافية