建立啟動設定檔

啟動設定檔是基準設定檔的子集。建構系統會使用啟動設定檔,透過改善 APK DEX 檔案中的程式碼版面配置,進一步最佳化所含的類別和方法。使用啟動設定檔後,應用程式啟動速度通常會比單獨使用基準設定檔時快上 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 會一併建立啟動設定檔和基準設定檔。

建立及產生啟動設定檔的一般步驟與建立基準設定檔的步驟相同。

建立啟動設定檔的預設方式,是使用 Android Studio 中的基準設定檔產生器模組範本。這包括形成基本啟動設定檔的啟動互動。如要為這個啟動設定檔新增更多關鍵使用者歷程 (CUJ),請將應用程式啟動 CUJ 新增至 rule 區塊,並將 includeInStartupProfile 設為 true。如果是簡單的應用程式,啟動應用程式的 MainActivity 可能就足夠了。如果是較複雜的應用程式,建議您在應用程式中加入最常見的進入點,例如從主畫面啟動應用程式,或啟動至深層連結

下列程式碼片段顯示基準設定檔產生器 (預設為 BaselineProfileGenerator.kt 檔案),其中包含從主畫面啟動應用程式,並啟動至深層連結。深層連結會直接前往應用程式的新聞動態,而非應用程式的主畫面。

@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 中找出啟動設定檔規則。

建立啟動設定檔時的考量

啟動設定檔的類別和方法輸出內容受限於第一個 classes.dex 檔案的大小。也就是說,並非所有基準設定檔歷程都應設為啟動設定檔歷程。

如要決定建立啟動設定檔時要涵蓋哪些使用者歷程,請考量大多數使用者啟動應用程式的地點。通常是從啟動器,且在使用者登入後。這也是最基本的基準設定檔歷程。

完成第一個用途後,請按照應用程式啟動程序的使用者漏斗進行。在許多情況下,應用程式啟動漏斗會按照以下清單進行:

  1. 主要啟動器活動
  2. 觸發應用程式啟動的通知
  3. 選用的啟動器活動

從清單頂端開始處理,並在 classes.dex 已滿之前停止。如要涵蓋之後的更多旅程,請將程式碼移出啟動路徑,並新增更多旅程。如要將程式碼移出啟動路徑,請在應用程式啟動期間檢查 Perfetto 追蹤記錄,並尋找執行時間過長的作業。您也可以使用Macrobenchmark,並啟用方法追蹤功能,以便在應用程式啟動期間自動取得完整的呼叫方法檢視畫面。

目前沒有任何建議。

建議 Google 帳戶。