โปรไฟล์เริ่มต้นเป็นกลุ่มย่อยของโปรไฟล์พื้นฐาน ระบบบิลด์ใช้โปรไฟล์การเริ่มต้นเพื่อเพิ่มประสิทธิภาพคลาสและเมธอดที่มีอยู่ โดยการปรับปรุงเลย์เอาต์ของโค้ดในไฟล์ DEX ของ APK โดยปกติแล้วการเริ่มต้นแอปจะเร็วขึ้น 15-30% เมื่อใช้โปรไฟล์การเริ่มต้น มากกว่าการใช้โปรไฟล์พื้นฐาน เพียงอย่างเดียว

ข้อกำหนด
เราขอแนะนำให้ใช้โปรไฟล์สตาร์ทอัพกับเครื่องมือต่อไปนี้
- Jetpack Macrobenchmark 1.2.0 ขึ้นไป
- ปลั๊กอิน Android Gradle 8.2 ขึ้นไป
- Android Studio Iguana ขึ้นไป
นอกจากนี้ คุณต้องมีการตั้งค่าต่อไปนี้ในแอป
- เปิดใช้ R8 แล้ว สำหรับบิลด์รุ่น ให้ตั้งค่า
isMinifyEnabled = true
- เปิดใช้การเพิ่มประสิทธิภาพเลย์เอาต์ DEX แล้ว ใน
baselineProfile {}
ของไฟล์บิลด์ของโมดูลแอป ให้ตั้งค่าdexLayoutOptimization = true
สร้างโปรไฟล์สตาร์ทอัป
Android Studio จะสร้างโปรไฟล์เริ่มต้นควบคู่ไปกับโปรไฟล์พื้นฐานเมื่อคุณ ใช้เทมเพลตเครื่องมือสร้างโปรไฟล์พื้นฐานเริ่มต้น
ขั้นตอนทั่วไปในการสร้างและสร้างโปรไฟล์ Startup จะเหมือนกับขั้นตอนในการสร้างโปรไฟล์พื้นฐาน
วิธีเริ่มต้นในการสร้างโปรไฟล์ Startup คือการใช้เทมเพลตโมดูล Baseline Profile
Generator จากภายใน Android Studio ซึ่งรวมถึงการโต้ตอบกับสตาร์ทอัพ
ที่สร้างโปรไฟล์สตาร์ทอัพพื้นฐาน หากต้องการเพิ่มเส้นทางของผู้ใช้ที่สําคัญ (CUJ) ให้กับโปรไฟล์สตาร์ทอัพนี้
ให้เพิ่ม CUJ การเริ่มต้นแอปของคุณลงในบล็อก rule
โดยตั้งค่า includeInStartupProfile
เป็น true
สำหรับแอปที่เรียบง่าย การเปิดตัวMainActivity
ของแอปอาจเพียงพอ สำหรับแอปที่ซับซ้อนมากขึ้น ให้พิจารณา
เพิ่มจุดแรกเข้าที่พบบ่อยที่สุดในแอป เช่น การเริ่มแอปจาก
หน้าจอหลักหรือการเปิดใช้ลิงก์ในรายละเอียด
ข้อมูลโค้ดต่อไปนี้แสดงเครื่องมือสร้าง Baseline Profile (โดยค่าเริ่มต้นคือไฟล์ BaselineProfileGenerator.kt
) ซึ่งรวมถึงการเริ่มต้นแอปจากหน้าจอหลักและการเปิดใช้ Deep Link Deep Link จะนำไปยังฟีดข่าวของแอปโดยตรง ไม่ใช่หน้าจอหลักของแอป
@RunWith(AndroidJUnit4::class)
@LargeTest
class BaselineProfileGenerator {
@get:Rule
val rule = BaselineProfileRule()
@Test
fun generate() {
rule.collect(
packageName = "com.example.app",
includeInStartupProfile = true
) {
// Launch directly into the NEWS_FEED.
startActivityAndWait(Intent().apply {
setPackage(packageName)
setAction("com.example.app.NEWS_FEED")
})
}
}
}
เรียกใช้การกำหนดค่าสร้างโปรไฟล์พื้นฐานสำหรับแอปและค้นหากฎของโปรไฟล์เริ่มต้นที่
src/<variant>/generated/baselineProfiles/startup-prof.txt
ข้อควรพิจารณาในการสร้างโปรไฟล์สตาร์ทอัป
หากต้องการตัดสินใจว่าจะครอบคลุมเส้นทางของผู้ใช้ใดเมื่อสร้างโปรไฟล์สตาร์ทอัป ให้พิจารณาว่าผู้ใช้ส่วนใหญ่เริ่มสมัครจากที่ใด โดยปกติแล้วจะมาจากตัวเรียกใช้และ หลังจากที่ผู้ใช้เข้าสู่ระบบแล้ว นอกจากนี้ยังเป็นโปรไฟล์ระดับพื้นฐาน ที่ง่ายที่สุดด้วย
หลังจากครอบคลุม Use Case แรกแล้ว ให้ทําตาม Funnel ของผู้ใช้สําหรับการเริ่มต้นแอป ในหลายกรณี Funnel การเริ่มต้นแอปจะเป็นไปตามรายการต่อไปนี้
- กิจกรรมตัวเรียกใช้หลัก
- การแจ้งเตือนที่ทริกเกอร์การเริ่มต้นแอป
- กิจกรรมตัวเรียกใช้ที่ไม่บังคับ
ทำงานในรายการนี้จากด้านบนและหยุดก่อนที่ classes.dex จะเต็ม หากต้องการครอบคลุมเส้นทางอื่นๆ ในภายหลัง ให้นำโค้ดออกจากเส้นทางการเริ่มต้นและเพิ่มเส้นทางอื่นๆ หากต้องการย้ายโค้ดออกจากเส้นทางการเริ่มต้น ให้ตรวจสอบการติดตาม Perfetto ระหว่างการเริ่มต้นแอป และมองหาการดำเนินการที่ใช้เวลานาน นอกจากนี้ คุณยังใช้ Macrobenchmark โดยเปิดใช้การติดตามเมธอด เพื่อให้เห็นภาพที่สมบูรณ์และอัตโนมัติของการเรียกเมธอดในระหว่างการเริ่มต้นแอปได้ด้วย
แนะนำสำหรับคุณ
- หมายเหตุ: ข้อความลิงก์จะแสดงเมื่อ JavaScript ปิดอยู่
- สร้างโปรไฟล์พื้นฐาน {:#creating-profile-rules}
- โปรไฟล์พื้นฐาน {:#baseline-profiles}
- การเขียน Microbenchmark