ดูข้อกำหนด ขั้นตอนการสร้าง และแนวทางปฏิบัติแนะนำ keywords_public: โปรไฟล์การเริ่มต้น, โปรไฟล์พื้นฐาน, ประสิทธิภาพของแอป, การเพิ่มประสิทธิภาพ APK , เลย์เอาต์ DEX, Android Studio, Jetpack Macrobenchmark
โปรไฟล์ Startup เป็นกลุ่มย่อยของโปรไฟล์พื้นฐาน ระบบบิลด์ใช้โปรไฟล์การเริ่มต้นเพื่อเพิ่มประสิทธิภาพคลาสและเมธอดที่มีอยู่ โดยการปรับปรุงเลย์เอาต์ของโค้ดในไฟล์ DEX ของ APK โดยปกติแล้วการเริ่มต้นแอปจะเร็วขึ้น 15-30% เมื่อใช้โปรไฟล์ Startup เทียบกับใช้โปรไฟล์ Baseline เพียงอย่างเดียว
ดูข้อมูลเพิ่มเติมได้ที่ภาพรวมของโปรไฟล์สตาร์ทอัพ
ข้อกำหนด
เราขอแนะนำให้ใช้โปรไฟล์สตาร์ทอัพกับเครื่องมือต่อไปนี้
- 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 ซึ่งรวมถึงการโต้ตอบในการเริ่มต้นใช้งาน
ที่สร้างโปรไฟล์ Startup พื้นฐาน หากต้องการเพิ่มเส้นทางของผู้ใช้ที่สําคัญ (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
) {
uiAutomator {
// Launch directly into the NEWS_FEED using startActivityIntent
startIntent(Intent().apply {
setPackage(packageName)
setAction("com.example.app.NEWS_FEED")
})
}
}
}
เรียกใช้การกำหนดค่าสร้างโปรไฟล์พื้นฐานสำหรับแอป แล้วค้นหากฎโปรไฟล์เริ่มต้นที่
src/<variant>/generated/baselineProfiles/startup-prof.txt ซึ่ง AGP จะใช้กฎเหล่านี้โดยอัตโนมัติ
ข้อควรพิจารณาในการสร้างโปรไฟล์สตาร์ทอัป
หากต้องการตัดสินใจว่าจะครอบคลุมเส้นทางของผู้ใช้ใดเมื่อสร้างโปรไฟล์สตาร์ทอัป ให้พิจารณาว่าผู้ใช้ส่วนใหญ่เริ่มสมัครจากที่ใด โดยปกติแล้วจะมาจากตัวเรียกใช้และ หลังจากที่ผู้ใช้เข้าสู่ระบบแล้ว นอกจากนี้ยังเป็นโปรไฟล์ระดับพื้นฐาน เส้นทางที่ง่ายที่สุดด้วย
หลังจากครอบคลุม Use Case แรกแล้ว ให้ทําตาม Funnel ของผู้ใช้สําหรับการเริ่มต้นแอป ในหลายกรณี Funnel การเริ่มต้นแอปจะเป็นไปตามรายการนี้
- กิจกรรมของ Launcher หลัก
- การแจ้งเตือนที่ทริกเกอร์การเริ่มต้นแอป
- กิจกรรมตัวเรียกใช้ที่ไม่บังคับ
ทำงานในรายการนี้จากด้านบนและหยุดก่อนที่ classes.dex จะเต็ม หากต้องการครอบคลุมเส้นทางอื่นๆ ในภายหลัง ให้นำโค้ดออกจากเส้นทางการเริ่มต้นและเพิ่มเส้นทางอื่นๆ หากต้องการย้ายโค้ดออกจากเส้นทางการเริ่มต้น ให้ตรวจสอบการติดตาม Perfetto ระหว่างการเริ่มต้นแอป และมองหาการดำเนินการที่ใช้เวลานาน นอกจากนี้ คุณยังใช้ Macrobenchmark โดยเปิดใช้การติดตามเมธอด เพื่อให้เห็นภาพที่สมบูรณ์และอัตโนมัติของการเรียกเมธอดในระหว่างการเริ่มต้นแอปได้ด้วย
แนะนำสำหรับคุณ
- หมายเหตุ: ข้อความลิงก์จะแสดงเมื่อ JavaScript ปิดอยู่
- สร้างโปรไฟล์พื้นฐาน {:#creating-profile-rules}
- โปรไฟล์พื้นฐาน {:#baseline-profiles}
- การเขียน Microbenchmark