تكرار السؤال: …
الإجابة المختصرة
هي مواصفات مدمجة داخل حزمة APK تحدد مسارات الكود الحرجة ليقوم نظام تشغيل أندرويد (ART) بترجمتها مسبقًا إلى كود آلة أصلي (AOT Compilation) أثناء التثبيت.
الشرح
يعتمد وقت تشغيل أندرويد (Android Runtime - ART) على الترجمة أثناء التنفيذ (JIT) والملاحظة الميدانية لترجمة الكود الشائع. بدون Baseline Profiles، يمر الكود بمرحلة تفسير بطيئة في أول فتح للتطبيق. تضمين Baseline Profiles المجمعة عبر Macrobenchmark يجعل الكود الحرج مترجمًا بالكامل قبل أول تشغيل، مما يلغي بطء التفسير الأولي تمامًا.
مثال بالكود
// Baseline Profile generator using Macrobenchmark
@RunWith(AndroidJUnit4::class)
class BaselineProfileGenerator {
@get:Rule
val baselineProfileRule = BaselineProfileRule()
@Test
fun generateBaselineProfile() = baselineProfileRule.collect(
packageName = "com.example.app"
) {
pressHome()
startActivityAndWait() // records the critical start-up path
}
}أخطاء شائعة
- تضمين التطبيق بأكمله داخل Baseline Profile مما يزيد من حجم الحزمة المثبتة دون فائدة للأماكن النادرة الاستخدام.