إنشاء ملفات شخصية أساسية
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
تُعدّ "ملفات Baseline Profile" ضرورية لتحقيق أفضل أداء في Jetpack Compose.
تساعد عملية التجميع المُسبَق لرحلات المستخدمين المهمة في ضمان عرض واجهة مستخدم Compose بسلاسة.
إنشاء ملفات شخصية تلقائيًا لكل إصدار من التطبيق باستخدام مكتبة Jetpack Macrobenchmark وBaselineProfileRule ننصحك باستخدام الإصدار com.android.tools.build:gradle:8.0.0 أو إصدار أحدث للاستفادة من التحسينات في الإصدار عند استخدام "ملفات Baseline".
في ما يلي الخطوات العامة لإنشاء ملف Baseline Profile جديد:
إعداد وحدة الملف الشخصي للمرجع
حدِّد اختبار JUnit الذي يساعد في إنشاء "ملفات شخصية للمرجع".
أضِف رحلات المستخدم الرئيسية (CUJ) التي تريد تحسينها.
إنشاء الملف الشخصي للمرجع.
بعد إنشاء الملف الشخصي للمرجع، يمكنك قياس أدائه باستخدام جهاز فعلي لتحديد مدى تحسّن السرعة.
إنشاء ملف Baseline Profile جديد باستخدام الإصدار 8.2 أو إصدار أحدث من "المكوّن الإضافي لنظام Gradle المتوافق مع Android"
أسهل طريقة لإنشاء الملف الشخصي للمرجع جديد هي استخدام نموذج وحدة Baseline Profile، الذي يتوفّر بدءًا من الإصدارات استوديو Android Iguana ومكوّن إضافي لنظام Gradle المتوافق مع Android (AGP) 8.2.
يؤدي نموذج وحدة "أداة إنشاء ملفات الملف الشخصي للمرجع" في "استوديو Android" إلى إتمام عملية إنشاء وحدة جديدة تلقائيًا لإنشاء ملفات الملف الشخصي للمرجع وقياس أدائها. يؤدي تنفيذ النموذج إلى إنشاء معظم إعدادات الإصدار النموذجية وBaseline Profile ورمز التحقّق. ينشئ النموذج رمزًا برمجيًا لإنشاء "ملفات شخصية للمرجع" وقياسها بهدف قياس سرعة بدء تشغيل التطبيق.
إعداد وحدة الملف الشخصي للمرجع
لتشغيل نموذج وحدة الملف الشخصي للمرجع، اتّبِع الخطوات التالية:
انقر على ملف (File) > جديد (New) > وحدة جديدة (New Module).
اختَر نموذج منشئ الملف الشخصي للمرجع في لوحة النماذج وأعِد ضبطه:
الشكل 1. نموذج وحدة إنشاء الملف الشخصي للمرجع
الحقول في النموذج هي:
التطبيق المستهدَف: هو التطبيق الذي يتم إنشاء "الملف الشخصي للمرجع" له. عندما يكون لديك وحدة تطبيق واحدة فقط في مشروعك، لن يكون هناك سوى عنصر واحد في هذه القائمة.
اسم الوحدة: الاسم الذي تريده لوحدة "الملف الشخصي للمرجع" الذي سيتم إنشاؤه.
اسم الحزمة: اسم الحزمة الذي تريده لوحدة الملف الشخصي للمرجع.
اللغة: ما إذا كنت تريد أن تكون الرموز البرمجية التي تم إنشاؤها بلغة Kotlin أو Java
لغة إعدادات التصميم: ما إذا كنت تريد استخدام Kotlin Script
(KTS) أو Groovy لنصوص إعدادات التصميم.
انقر على إنهاء وسيتم إنشاء الوحدة الجديدة. إذا كنت تستخدم نظام التحكّم بالمصادر، قد يُطلب منك إضافة ملفات الوحدة النمطية التي تم إنشاؤها حديثًا إلى نظام التحكّم بالمصادر.
تحديد أداة إنشاء ملفات Baseline Profile
يحتوي الوحدة التي تم إنشاؤها حديثًا على اختبارات لإنشاء "ملف تعريف المرجع" وقياس أدائه، واختبار بدء تشغيل التطبيق الأساسي فقط. ننصحك بتعزيز هذه المقاييس لتشمل رحلات المستخدمين الشائعة (CUJ) وسير عمل بدء التشغيل المتقدّم. تأكَّد من أنّ أي اختبارات ذات صلة ببدء تشغيل التطبيق مضمّنة في كتلة rule مع ضبط includeInStartupProfile على true. في المقابل، ولتحقيق الأداء الأمثل، تأكَّد من أنّ أي اختبارات غير ذات صلة ببدء تشغيل التطبيق غير مضمّنة في ملف تعريف بدء التشغيل. تُستخدَم عمليات تحسين بدء تشغيل التطبيق لتحديد جزء خاص من الملف الشخصي للمرجع يُعرف باسم ملف تعريف بدء التشغيل.
يساعد ذلك في الحفاظ على قابلية الصيانة إذا تم تجريد رحلات المستخدم الأساسية (CUJ) هذه خارج الملف الشخصي للمرجع الذي تم إنشاؤه ورمز قياس الأداء، وذلك حتى يمكن استخدامها لكليهما. وهذا يعني أنّه يتم استخدام التغييرات التي يتم إجراؤها على رحلات المستخدمين الشائعة بشكل متّسق.
إنشاء الملف الشخصي للمرجع وتثبيته
يضيف نموذج وحدة الملف الشخصي للمرجع إعداد تشغيل جديدًا لإنشاء الملف الشخصي للمرجع. إذا كنت تستخدم صيغ المنتجات، ينشئ "استوديو Android" إعدادات تشغيل متعدّدة لتتمكّن من إنشاء "ملفات تعريف أساسية" منفصلة لكل صيغة.
الشكل 2. يؤدي تنفيذ هذا الإعداد إلى إنشاء ملف Baseline Profile.
عند اكتمال عملية تنفيذ إنشاء الملف الشخصي للمرجع، يتم نسخ الملف الشخصي للمرجع الذي تم إنشاؤه إلى الملف src/variant/generated/baselineProfiles/baseline-prof.txt في الوحدة التي يتم قياس أدائها. تكون خيارات الإصدار إما نوع إصدار أو صيغة إصدار تتضمّن نوع الإصدار.
تم إنشاء الملف الشخصي للمرجع الذي تم إنشاؤه في الأصل في build/outputs. يتم تحديد المسار الكامل حسب صيغة التطبيق أو نوعه الذي يتم إنشاء الملف الشخصي له، وما إذا كنت تستخدم جهازًا تديره Gradle أو جهازًا متصلاً لإنشاء الملف الشخصي. إذا كنت تستخدم الأسماء التي تستخدمها إعدادات الرمز وإعدادات التصميم التي تم إنشاؤها بواسطة النموذج، سيتم إنشاء الملف الشخصي للمرجع في الملف build/outputs/managed_device_android_test_additional_output/nonminifiedrelease/pixel6Api31/BaselineProfileGenerator_generate-baseline-prof.txt. من غير المحتمل أن تحتاج إلى التفاعل مع هذا الإصدار من الملف الشخصي للمرجع الذي تم إنشاؤه مباشرةً، إلا إذا كنت تنسخه يدويًا إلى الوحدات المستهدَفة (وهذا غير مستحسَن).
إنشاء ملف Baseline Profile جديد باستخدام الإصدار 8.1 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android"
إذا لم تتمكّن من استخدام نموذج وحدة الملف الشخصي للمرجع، استخدِم نموذج وحدة Macrobenchmark ومكوّن الملف الشخصي للمرجع الإضافي في Gradle لإنشاء ملف شخصي للمرجع جديد. ننصحك باستخدام هذه الأدوات بدءًا من الإصدار Android Studio Giraffe والإصدار 8.1 من "مكوّن Android الإضافي لبرنامج Gradle".
في ما يلي خطوات إنشاء ملف شخصي للمرجع جديد باستخدام نموذج وحدة Macrobenchmark ومكوّن Baseline Profile الإضافي في Gradle:
يمكن أن يحتوي المُنشئ على تفاعلات مع تطبيقك تتجاوز بدء تشغيل التطبيق.
يتيح لك ذلك تحسين أداء وقت التشغيل لتطبيقك، مثل
قوائم التمرير السريع وتشغيل الرسوم المتحركة والتنقّل داخل Activity.
اطّلِع على أمثلة أخرى للاختبارات التي تستخدم @BaselineProfileRule لتحسين رحلات المستخدمين المهمة.
أضِف المكوّن الإضافي لنظام Gradle الخاص بملفات الملف الشخصي للمرجع (libs.plugins.androidx.baselineprofile)، إذ يسهّل هذا المكوّن إنشاء ملفات الملف الشخصي للمرجع والحفاظ عليها في المستقبل.
لإنشاء الملف الشخصي للمرجع، شغِّل مهمتَي Gradle :app:generateBaselineProfile أو :app:generateVariantBaselineProfile في نافذة الجهاز.
شغِّل أداة الإنشاء كاختبار مزوَّد بأدوات على جهاز فعلي مزوَّد بإذن الوصول إلى الجذر أو محاكي أو جهاز مُدار من Gradle. إذا كنت تستخدم جهازًا مُدارًا من Gradle،
اضبط aosp على systemImageSource، لأنّك تحتاج إلى إذن الوصول إلى الجذر
لإنشاء "الملف الشخصي للمرجع".
في نهاية مهمة إنشاء ملف Baseline Profile، يتم نسخ الملف إلى
app/src//generated/baselineProfiles.
إنشاء ملف Baseline Profile جديد بدون نماذج
ننصحك بإنشاء الملف الشخصي للمرجع باستخدام نموذج وحدة الملف الشخصي للمرجع في استوديو Android (الخيار المفضّل) أو نموذج Macrobenchmark، ولكن يمكنك أيضًا استخدام المكوّن الإضافي Gradle للملف الشخصي للمرجع بمفرده. لمزيد من المعلومات حول المكوّن الإضافي لنظام Gradle الخاص بملف Baseline، اطّلِع على مقالة ضبط إنشاء ملف Baseline.
في ما يلي كيفية إنشاء "الملف الشخصي للمرجع" باستخدام مكوّن Baseline Profile الإضافي في Gradle مباشرةً:
أنشئ وحدة com.android.test جديدة، مثل
:baseline-profile.
اضبط ملف build.gradle.kts لـ :baseline-profile:
طبِّق المكوّن الإضافي androidx.baselineprofile.
تأكَّد من أنّ targetProjectPath يشير إلى الوحدة :app.
يمكنك اختياريًا إضافة جهاز مُدار من Gradle. في المثال التالي، تكون القيمة pixel6Api31. في حال عدم تحديد ذلك، يستخدم المكوّن الإضافي جهازًا متصلاً، سواء كان محاكيًا أو فعليًا.
طبِّق الإعدادات التي تريدها، كما هو موضَّح في المثال التالي.
Kotlin
plugins{id("com.android.test")id("androidx.baselineprofile")}android{defaultConfig{...}// Point to the app module, the module that you're generating the Baseline Profile for.targetProjectPath=":app"// Configure a GMD (optional).testOptions.managedDevices.devices{pixel6Api31(com.android.build.api.dsl.ManagedVirtualDevice){device="Pixel 6"apiLevel=31systemImageSource="aosp"}}}dependencies{...}// Baseline Profile Gradle plugin configuration. Everything is optional. This// example uses the GMD added earlier and disables connected devices.baselineProfile{// Specifies the GMDs to run the tests on. The default is none.managedDevices+="pixel6Api31"// Enables using connected devices to generate profiles. The default is// `true`. When using connected devices, they must be rooted or API 33 and// higher.useConnectedDevices=false}
أنيق
plugins{id'com.android.test'id'androidx.baselineprofile'}android{defaultConfig{...}// Point to the app module, the module that you're generating the Baseline Profile for.targetProjectPath':app'// Configure a GMD (optional).testOptions.managedDevices.devices{pixel6Api31(com.android.build.api.dsl.ManagedVirtualDevice){device'Pixel 6'apiLevel31systemImageSource'aosp'}}}dependencies{...}// Baseline Profile Gradle plugin configuration. Everything is optional. This// example uses the GMD added earlier and disables connected devices.baselineProfile{// Specifies the GMDs to run the tests on. The default is none.managedDevices['pixel6Api31']// Enables using connected devices to generate profiles. The default is// `true`. When using connected devices, they must be rooted or API 33 and// higher.useConnectedDevicesfalse}
أنشئ اختبار الملف الشخصي للمرجع في وحدة الاختبار :baseline-profile. المثال التالي هو اختبار ينشئ الملف الشخصي للمرجع لبدء تشغيل التطبيق.
عدِّل ملف build.gradle.kts في وحدة التطبيق، مثل :app.
طبِّق المكوّن الإضافي androidx.baselineprofile.
أضِف اعتمادية baselineProfile إلى الوحدة :baseline-profile.
Kotlin
plugins{id("com.android.application")id("androidx.baselineprofile")}android{// There are no changes to the `android` block....}dependencies{...// Add a `baselineProfile` dependency on the `:baseline-profile` module.baselineProfile(project(":baseline-profile"))}
أنيق
plugins{id'com.android.application'id'androidx.baselineprofile'}android{// No changes to the `android` block....}dependencies{...// Add a `baselineProfile` dependency on the `:baseline-profile` module.baselineProfile':baseline-profile'}
يمكنك إنشاء الملف الشخصي عن طريق تنفيذ مهام Gradle :app:generateBaselineProfile
أو :app:generateVariantBaselineProfile.
في نهاية مهمة إنشاء ملف Baseline Profile، يتم نسخ الملف إلى
app/src/variant/generated/baselineProfiles.
الشكل 3. تشغيل اختبارات Android من خلال إجراء Run Android Tests from the gutter (تشغيل اختبارات Android من الشريط الجانبي)
عند تشغيل هذا الرمز البرمجي في استوديو Android، ستتضمّن نتائج الإصدار تفاصيل حول التحسينات في السرعة التي يوفّرها الملف الشخصي للمرجع:
StartupBenchmarks_startupCompilationBaselineProfiles
timeToInitialDisplayMs min 161.8, median 178.9, max 194.6
StartupBenchmarks_startupCompilationNone
timeToInitialDisplayMs min 184.7, median 196.9, max 202.9
تسجيل جميع مسارات الرموز المطلوبة
في ما يلي المقياسان الرئيسيان لقياس مدة بدء تشغيل التطبيق:
الوقت المستغرَق للعرض الكامل (TTFD): هو الوقت المستغرَق للعرض الأوّلي (TTID) بالإضافة إلى الوقت المستغرَق لعرض المحتوى
الذي يتم تحميله بشكل غير متزامن بعد عرض الإطار الأوّلي.
يتم تسجيل مقياس TTFD مرة واحدة عند استدعاء الطريقة reportFullyDrawn الخاصة بالفئة ComponentActivity. في حال عدم استدعاء reportFullyDrawn مطلقًا، يتم الإبلاغ عن TTID بدلاً من ذلك. قد تحتاج إلى تأخير وقت استدعاء reportFullyDrawn إلى ما بعد اكتمال التحميل غير المتزامن. على سبيل المثال، إذا كانت واجهة المستخدم تحتوي على قائمة تحميل كسول ديناميكية، قد تتم تعبئة القائمة بمهمة تعمل في الخلفية وتكتمل بعد رسم القائمة لأول مرة، وبالتالي بعد وضع علامة على واجهة المستخدم بأنّها مرسومة بالكامل. في مثل هذه الحالات، لا يتم تضمين الرمز الذي يتم تنفيذه بعد أن تصل واجهة المستخدم إلى حالة الرسم الكامل في "الملف الشخصي للمرجع".
لتضمين تعبئة القائمة كجزء من "الملف الشخصي للمرجع"، احصل على
FullyDrawnReporter باستخدام getFullyDrawnReporter وأضِف أداة إعداد تقارير
إليها في رمز تطبيقك. حرِّر أداة إنشاء التقارير بعد انتهاء مهمة الخلفية من ملء القائمة. لا يستدعي FullyDrawnReporter الطريقة reportFullyDrawn إلا بعد إيقاف جميع عمليات الإبلاغ. من خلال إجراء ذلك، يتضمّن "الملف الشخصي للمرجع" مسارات برمجية مطلوبة لتعبئة القائمة. لا يؤدي ذلك إلى تغيير سلوك التطبيق بالنسبة إلى المستخدم، ولكنّه يتيح تضمين جميع مسارات الرموز البرمجية اللازمة في "الملف الأساسي".
للإشارة إلى حالة الرسم الكامل، استخدِم واجهات برمجة التطبيقات التالية في Compose:
يشير الرمز ReportDrawn إلى أنّ العنصر القابل للإنشاء جاهز للتفاعل معه على الفور.
تأخذ الدالة ReportDrawnWhen قيمة منطقية، مثل list.count > 0، لتحديد الوقت الذي تصبح فيه الدالة المركّبة جاهزة للتفاعل.
تأخذ ReportDrawnAfter طريقة تعليق تشير عند اكتمالها إلى أنّ الدالة المركّبة جاهزة للتفاعل.
مُقترَحة لك
ملاحظة: يتم عرض نص الرابط عندما تكون JavaScript غير مفعّلة
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2026-08-24 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2026-08-24 (حسب التوقيت العالمي المتفَّق عليه)"],[],[]]