建立啟動設定檔

啟動設定檔是基準設定檔的子集。建構系統會使用啟動設定檔,改善 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")
            })
        }
    }
}

執行「Generate Baseline Profile for app」(為應用程式產生基準設定檔) 設定,並在 src/<variant>/generated/baselineProfiles/startup-prof.txt 找到啟動設定檔規則。

建立新創公司簡介時的考量事項

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

涵蓋第一個用途後,請按照應用程式啟動的使用者漏斗操作。在許多情況下,應用程式啟動漏斗會遵循下列清單:

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

從清單頂端開始處理,並在 classes.dex 填滿前停止。如要涵蓋更多歷程,請將程式碼移出啟動路徑,並新增更多歷程。如要將程式碼移出啟動路徑,請在應用程式啟動期間檢查 Perfetto 追蹤記錄,並找出長時間執行的作業。您也可以使用巨集基準測試,並啟用方法追蹤,自動且完整地查看應用程式啟動期間的方法呼叫。