建立基準設定檔

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

應用程式開發人員可以使用 Jetpack Macrobenchmark 程式庫BaselineProfileRule,自動針對每個應用程式版本產生設定檔。建議使用 com.android.tools.build:gradle:7.4.1 以上版本,因為這些版本已針對使用基準設定檔的情況改進建構功能。

定義基準設定檔產生器

以下說明如何用 Macrobenchmark 程式庫建立基準設定檔:

  1. 在 Gradle 專案中設定 Macrobenchmark 模組

  2. 定義名為 BaselineProfileGenerator 的新測試,如下:

    @OptIn(ExperimentalBaselineProfilesApi::class)
    class BaselineProfileGenerator {
        @get:Rule
        val baselineProfileRule = BaselineProfileRule()
    
        @Test
        fun startup() = baselineProfileRule.collectBaselineProfile(
            packageName = "com.example.app",
            profileBlock = {
                startActivityAndWait()
            }
        )
    }
    

    產生器可以涵蓋應用程式啟動之外的互動作業,協助您改進應用程式的執行階段效能,例如捲動清單、執行動畫、瀏覽活動等等。您可以查看其他測試案例,瞭解如何使用 @BaselineProfileRule 改進關鍵使用者旅程。

  3. (選用) 產生基準設定檔時,您必須停用模糊處理功能,方法是在應用程式模組中建立另一個 Proguard 檔案,然後單獨針對負責產生設定檔的 benchmark 建構類型新增 -dontobfuscate

    Kotlin

    buildTypes {
        val benchmark by creating {
            // Only use benchmark proguard rules
            proguardFiles("benchmark-rules.pro")
            // ...
        }
    }
    

    Groovy

    buildTypes {
        benchmark {
            // Only use benchmark proguard rules
            proguardFiles 'benchmark-rules.pro'
            // ...
        }
    }
    

產生基準設定檔

  1. 您可以在已啟用 Root 權限的實體裝置、模擬器或 Gradle 管理的裝置上執行產生器,進行檢測測試。如要設定受管理的裝置,請開啟 build.gradle.kts 檔案,在 testOptions 設定區塊中新增 managedDevicesdevices,然後建立模擬器定義。請務必將 systemImageSource 設為 aosp,因為您需要基準設定檔產生器的 Root 存取權。

    Kotlin

    testOptions {
        managedDevices {
            devices {
                create ("pixel6Api31", ManagedVirtualDevice::class) {
                    device = "Pixel 6"
                    apiLevel = 31
                    systemImageSource = "aosp"
                }
            }
        }
    }
    

    Groovy

    testOptions {
        managedDevices {
            devices {
                pixel6Api31(com.android.build.api.dsl.ManagedVirtualDevice) {
                    device = "Pixel 6"
                    apiLevel = 31
                    systemImageSource = "aosp"
                }
            }
        }
    }
    
  2. Gradle 會根據所選裝置名稱和模組中可用的建構變化版本建立必要工作,採用的格式為 [emulator_name][flavor][build type]AndroidTest。這項工作可以在終端機中執行,如下所示:

    ./gradlew :benchmark:pixel6Api31BenchmarkAndroidTest
    

套用產生的規則

基準設定檔產生器會在裝置上建立使用者可以理解的文字檔案 (HRF),並將該檔案複製到主體機器上。請按照下列步驟,將產生的設定檔套用到程式碼:

  1. 在產生設定檔的模組底下,從建構資料夾找出設定檔。路徑如下:[module]/build/outputs/managed_device_android_test_additional_output/[device]

    設定檔的命名模式為 [class name]-[test method name]-baseline-prof.txt,具體如下所示:BaselineProfileGenerator-startup-baseline-prof.txt

  2. 將產生的設定檔和 AndroidManifest.xml 一起複製到應用程式模組的 src/main/,然後將檔案重新命名為 baseline-prof.txt

  3. 在應用程式 build.gradle 中的 ProfileInstaller 程式庫內加入依附元件,藉此在沒有 Cloud 設定檔的地方啟用本機基準設定檔編譯作業。這是在本機側載基準設定檔的唯一方法。

    dependencies {
         implementation("androidx.profileinstaller:profileinstaller:1.2.2")
    }
    
  4. 建構應用程式的實際工作環境版本;在此期間套用的 HRF 規則會壓縮為二進位檔格式,附在 APK 或 AAB 中。接下來,請照常發布應用程式。

其他注意事項

建立基準設定檔時,您還需要注意下列幾點:

  • 二進位基準設定檔必須小於 1.5 MB。如要確認基準設定檔的大小,您可以在輸出構件中找到相對應的檔案,比如 APK 的檔案位於 assets/dexopt/baseline.prof 底下,AAB 的檔案則位於 BUNDLE-METADATA/com.android.tools.build.profiles/baseline.prof 底下。

  • 如果廣泛規則對應用程式過度編譯,啟動速度會因為磁碟存取量變大而降低。如果您是剛開始使用基準設定檔,可以不必擔心。不過,如果您已開始加入大量1旅程,就應該嘗試運用不同設定檔來測試應用程式的效能,確認新增旅程不會導致效能降低。

程式碼研究室

深入瞭解如何使用 Macrobenchmark 評估效能。
產生專為 Android 應用程式建立的自訂基準設定檔,並驗證有效性。

  1. 視您的應用程式大小和旅程數量而定。