สร้างโปรไฟล์สตาร์ทอัพ

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

รูปที่ 1 การปรับปรุงการอ้างอิงโค้ดจากเลย์เอาต์ DEX การเพิ่มประสิทธิภาพ

ข้อกำหนด

เราขอแนะนำให้ใช้โปรไฟล์สตาร์ทอัพกับเครื่องมือต่อไปนี้

  • 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

ข้อควรพิจารณาในการสร้างโปรไฟล์สตาร์ทอัป

หากต้องการตัดสินใจว่าจะครอบคลุมเส้นทางของผู้ใช้ใดเมื่อสร้างโปรไฟล์สตาร์ทอัป ให้พิจารณาว่าผู้ใช้ส่วนใหญ่เริ่มสมัครจากที่ใด โดยปกติแล้วจะมาจากตัวเรียกใช้และ หลังจากที่ผู้ใช้เข้าสู่ระบบแล้ว นอกจากนี้ยังเป็นโปรไฟล์ระดับพื้นฐาน เส้นทางที่ง่ายที่สุดด้วย

หลังจากครอบคลุม Use Case แรกแล้ว ให้ทําตาม Funnel ของผู้ใช้สําหรับการเริ่มต้นแอป ในหลายกรณี Funnel การเริ่มต้นแอปจะเป็นไปตามรายการนี้

  1. กิจกรรมของ Launcher หลัก
  2. การแจ้งเตือนที่ทริกเกอร์การเริ่มต้นแอป
  3. กิจกรรมตัวเรียกใช้ที่ไม่บังคับ

ทำงานในรายการนี้จากด้านบนและหยุดก่อนที่ classes.dex จะเต็ม หากต้องการครอบคลุมเส้นทางอื่นๆ ในภายหลัง ให้นำโค้ดออกจากเส้นทางการเริ่มต้นและเพิ่มเส้นทางอื่นๆ หากต้องการย้ายโค้ดออกจากเส้นทางการเริ่มต้น ให้ตรวจสอบการติดตาม Perfetto ระหว่างการเริ่มต้นแอป และมองหาการดำเนินการที่ใช้เวลานาน นอกจากนี้ คุณยังใช้ Macrobenchmark โดยเปิดใช้การติดตามเมธอด เพื่อให้เห็นภาพที่สมบูรณ์และอัตโนมัติของการเรียกเมธอดในระหว่างการเริ่มต้นแอปได้ด้วย