應用程式開發人員可以使用 Jetpack Macrobenchmark 程式庫和 BaselineProfileRule
,自動針對每個應用程式版本產生設定檔。建議使用 com.android.tools.build:gradle:7.4.1
以上版本,因為這些版本已針對使用基準設定檔的情況改進建構功能。
定義基準設定檔產生器
以下說明如何用 Macrobenchmark 程式庫建立基準設定檔:
在 Gradle 專案中設定 Macrobenchmark 模組。
定義名為
BaselineProfileGenerator
的新測試,如下:@OptIn(ExperimentalBaselineProfilesApi::class) class BaselineProfileGenerator { @get:Rule val baselineProfileRule = BaselineProfileRule() @Test fun startup() = baselineProfileRule.collectBaselineProfile( packageName = "com.example.app", profileBlock = { startActivityAndWait() } ) }
產生器可以涵蓋應用程式啟動之外的互動作業,協助您改進應用程式的執行階段效能,例如捲動清單、執行動畫、瀏覽活動等等。您可以查看其他測試案例,瞭解如何使用
@BaselineProfileRule
改進關鍵使用者旅程。(選用) 產生基準設定檔時,您必須停用模糊處理功能,方法是在應用程式模組中建立另一個 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' // ... } }
產生基準設定檔
您可以在已啟用 Root 權限的實體裝置、模擬器或 Gradle 管理的裝置上執行產生器,進行檢測測試。如要設定受管理的裝置,請開啟
build.gradle.kts
檔案,在testOptions
設定區塊中新增managedDevices
和devices
,然後建立模擬器定義。請務必將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" } } } }
Gradle 會根據所選裝置名稱和模組中可用的建構變化版本建立必要工作,採用的格式為
[emulator_name][flavor][build type]AndroidTest
。這項工作可以在終端機中執行,如下所示:./gradlew :benchmark:pixel6Api31BenchmarkAndroidTest
套用產生的規則
基準設定檔產生器會在裝置上建立使用者可以理解的文字檔案 (HRF),並將該檔案複製到主體機器上。請按照下列步驟,將產生的設定檔套用到程式碼:
在產生設定檔的模組底下,從建構資料夾找出設定檔。路徑如下:
[module]/build/outputs/managed_device_android_test_additional_output/[device]
設定檔的命名模式為
[class name]-[test method name]-baseline-prof.txt
,具體如下所示:BaselineProfileGenerator-startup-baseline-prof.txt
。將產生的設定檔和
AndroidManifest.xml
一起複製到應用程式模組的src/main/
,然後將檔案重新命名為baseline-prof.txt
。在應用程式
build.gradle
中的 ProfileInstaller 程式庫內加入依附元件,藉此在沒有 Cloud 設定檔的地方啟用本機基準設定檔編譯作業。這是在本機側載基準設定檔的唯一方法。dependencies { implementation("androidx.profileinstaller:profileinstaller:1.2.2") }
建構應用程式的實際工作環境版本;在此期間套用的 HRF 規則會壓縮為二進位檔格式,附在 APK 或 AAB 中。接下來,請照常發布應用程式。
其他注意事項
建立基準設定檔時,您還需要注意下列幾點:
二進位基準設定檔必須小於 1.5 MB。如要確認基準設定檔的大小,您可以在輸出構件中找到相對應的檔案,比如 APK 的檔案位於
assets/dexopt/baseline.prof
底下,AAB 的檔案則位於BUNDLE-METADATA/com.android.tools.build.profiles/baseline.prof
底下。如果廣泛規則對應用程式過度編譯,啟動速度會因為磁碟存取量變大而降低。如果您是剛開始使用基準設定檔,可以不必擔心。不過,如果您已開始加入大量1旅程,就應該嘗試運用不同設定檔來測試應用程式的效能,確認新增旅程不會導致效能降低。
程式碼研究室
使用 Macrobenchmark 檢查應用程式效能
使用基準設定檔改善應用程式效能
-
視您的應用程式大小和旅程數量而定。 ↩