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

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

รูปที่ 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 ซึ่งรวมถึงการโต้ตอบกับสตาร์ทอัพ ที่สร้างโปรไฟล์สตาร์ทอัพพื้นฐาน หากต้องการเพิ่มเส้นทางของผู้ใช้ที่สําคัญ (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 การเริ่มต้นแอปจะเป็นไปตามรายการต่อไปนี้

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

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