本頁面說明如何在使用 Microbenchmark 程式庫時設定非 Gradle 建構系統。
雖然 Microbenchmark 程式庫提供的 Gradle 外掛程式可直接與 Android Gradle 外掛程式整合,但您也可以在其他建構系統 (例如 Bazel 或 Buck) 中使用該外掛程式。
檢測
在測試資訊清單的檢測區塊中指定 AndroidBenchmarkRunner
或子類別,做為檢測執行器:
<manifest package="com.example.library.test" ...> <instrumentation android:name="androidx.benchmark.junit4.AndroidBenchmarkRunner" /> ... </manifest>
如要取得準確的評估結果,基準測試不得為可進行偵錯。如果您未正確設定可進行偵錯的旗標,程式庫會擲回錯誤,而非回報無效的結果。您可能需要在本機執行作業期間將這項設定切換為 debuggable=true
,才能與 Android Studio 分析器搭配使用。
您可以建構 Microbenchmark,以兩種方式執行:在自我檢測 APK 中執行,或使用一個測試 APK 檢測另一個 APK。
自我檢測 APK
使用自我檢測 APK (做為 Gradle 針對 com.android.library
的 androidTest
目錄輸出內容) 時,您必須在單一 APK 的 Android 資訊清單中停用可進行偵錯的功能:
<manifest package="com.example.library.test" ...> <instrumentation android:name="androidx.benchmark.junit4.AndroidBenchmarkRunner" android:targetPackage="com.example.library.test"/> <application android:debuggable="false"/> </manifest>
透過測試 APK 檢測的應用程式 APK
如果您的版本輸出兩個 APK,也就是應用程式 APK 和測試 APK (做為 Gradle 針對 com.android.app
套件中 androidTest
目錄的輸出內容),您必須將應用程式 APK 設為 debuggable=false
。Android OS 會忽略測試 APK 的可偵錯旗標。
<!-- Test manifest. --> <manifest package="com.example.android.app.test" ...> <instrumentation android:name="androidx.benchmark.junit4.AndroidBenchmarkRunner" android:targetPackage="com.example.android.app"/> <!-- This debuggable is ignored by the OS. --> </manifest> <!-- App being tested. --> <manifest package="com.example.android.app" ...> <application android:debuggable="false"/> </manifest>
Android Studio 和 Gradle 不支援對應用程式模組 APK 執行 Microbenchmark。這是因為支援額外的測試目錄相當複雜,這類目錄會仰賴無法偵錯、經最佳化或壓縮的 APK 變化版本,但不會經由壓縮將基準測試中的呼叫分割到應用程式的程式碼中。
編譯
建議您先使用以下程式碼編譯 Microbenchmark APK,再執行測試: 以下指令:
adb shell cmd package compile -f -m speed com.example.benchmark
壓縮與最佳化
建議您對基準使用壓縮和最佳化,以便獲得更接近正式版的效能。如需程式碼範例,請參閱「基準測試範例專案」。
程式碼涵蓋率
建議您在停用涵蓋率功能的情況下執行基準測試,而且不要使用 JaCoCo 等工具對任何程式庫或 DEX 執行破壞處理。
因此,建議您將基準測試做為獨立於其他檢測設備測試的來源集,並使用正式版依附元件另外建構基準測試。這麼做可讓您不必重複建立測試,不論是否啟用涵蓋率功能都一樣。
基準測試所依賴的程式庫偵錯變化版本 (尤其是在本機建構的變化版本) 可能會在啟用涵蓋率功能的情況下進行建構。
執行測試
您可以透過指令列執行測試,並指定要執行的類別,如以下範例所示:
adb shell am instrument -w com.example.benchmark/androidx.benchmark.junit4.AndroidBenchmarkRunner
如要在沒有 Gradle 的執行階段設定 Microbenchmark 程式庫,請參閱「Microbenchmark 檢測引數」。
為您推薦
- 注意:系統會在 JavaScript 關閉時顯示連結文字
- 編寫 Microbenchmark
- 建立基準設定檔 {:#create-profile-rules}