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

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

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

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

مزايا الملفات الشخصية للمرجع

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

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

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

الملفات الشخصية لبدء التشغيل

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

البدء

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

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

  • المكوّن الإضافي لنظام 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 واحد، يتم تجميع الملفات الشخصية الأساسية بشكل صحيح لملف .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. ويمكنك بعد ذلك تحميل حِزمة APK المُعدّة للنشر على Google Play كالمعتاد.

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

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

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

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

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

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

سلوك الترجمة على مختلف إصدارات Android

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

إصدار 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).

  • لتقديم ملفات Baseline Profile للمكتبات بنجاح، استخدِم مكوّن Baseline Profile 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" مع استخدام الملفات الشخصية الأساسية عند التثبيت. لا يستفيد مستخدمو التطبيقات المثبَّتة من خلال هذين الطريقتَين من المزايا إلى أن يتم تشغيل أداة dexopt في الخلفية، وهو ما قد يتم أثناء الليل.

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

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

مصادر إضافية