過去幾年來,我們一直致力于讓性能提升工作變得更易上手、回報更高。我們將在本文中分享這一領域的最新發展動態。為您介紹基準配置文件、Android Studio 中的工具改進、庫,以及我們如何讓這項技術更好地在后臺為您服務。此外,我們非常高興地分享在基準配置文件上使用的全新實驗性技術,助您大幅提升啟動性能。歡迎您繼續閱讀以全面了解 2023 年 Google I/O 大會期間發布的 Android 性能的最新動態,我們也在本文結尾處與您分享了性能探索之旅中切實可行的舉措。
基準配置文件更新
基準配置文件可以通過避免即時 (JIT) 編譯,將應用啟動和運行時的代碼執行速度提升約 30%。為此,我們構建了多款工具來幫助您簡化基準配置文件的創建和維護工作,其中包括全新 Android Studio 模板和基準配置文件 Gradle 插件。現在,您可以借助 Android Studio Hedgehog 和 Android Gradle 插件 8.0.0 或更新版本,即刻開始使用這兩款工具。
借助基準配置文件 Gradle 插件
簡化配置文件生成
基準配置文件 Gradle 插件可以在本地開發和 CI 過程中,進一步簡化基準配置文件的生成和維護過程。此插件可以執行生成基準配置文件和將其安裝到應用模塊所需的所有必要步驟。 如要使用此插件,您可以在項目中添加一個插樁測試模塊,并設定一組通過在您的應用中導航來模擬關鍵用戶歷程的測試。在運行插樁測試時,基準配置文件 Gradle 插件會跟蹤在這類用戶歷程中執行的所有類和方法,并基于這些類和方法生成基準配置文件。然后,此插件會將生成的基準配置文件復制到應用模塊的源集中。 應用此插件后,您可以使用構建腳本中的全新 baselineProfile 塊對其進行配置。generateBaselineProfile 任務會代您運行所有基準配置文件測試。由此生成的配置文件將存儲在生成的文件夾中,供您在此訪問。這些功能使得在本地和遠程 CI 服務器上自動生成基準配置文件的過程更順暢。此外,通過指定要在生成配置文件時使用的 Gradle 管理的設備,您甚至不再需要附加實體設備。此插件的 DSL 支持高度可配置的設置,讓您可以自動化并重現基準配置文件生成過程。 您可以查看代碼示例 (目前位于單獨分支) 和指導文檔,即刻開始使用。
-
代碼示例
https://github.com/android/performance-samples/tree/bpgp/MacrobenchmarkSample
-
指導文檔
https://developer.android.google.cn/topic/performance/baselineprofiles/create-baselineprofile
使用 AGP 8 及以上版本創建和管理多個基準配置文件源文件
AGP 8 及以上版本支持多源文件、多種特定配置文件和上方提及的新版 Gradle 插件,且支持更輕松地生成基準配置文件。現在,基準配置文件的默認位置是 src/main/baselineProfiles/。此插件可將儲存在此目錄中的基準配置文件源文件提取并合并到您的應用中。幫助您單獨存儲應用啟動和每個不同的用戶歷程所需的配置文件。
△ Macrobenchmark 示例中的多個基準配置文件源文件
使用 Android Studio 基準配置文件生成器模板更輕松上手
為了幫助您開始使用基準配置文件,Android Studio Hedgehog (2023.1.1) 添加了基準配置文件生成器模塊向導模板。使用此模板,您的應用可以通過視覺輔助方式設置基準配置文件。 首先前往 "文件">"新建">"新模塊",然后在模板列表中選擇 "基準配置文件生成器"。
△基準配置文件生成器向導
操作完成后,此模板將為您進行多項更改。它會創建包含基本生成器和基準測試的全新 :baselineprofile 測試模板。BaselineProfileGenerator 類會為您創建基本基準配置文件,而 StartupBenchmarks 可以驗證一切是否合乎預期。此外,系統將在相關模塊中應用基準配置文件 Gradle 插件。最后,此生成器將添加有關 androidx.profileinstaller 的依賴項,以協助進行本地驗證并確保向后兼容性。
在這里,您只需執行 "生成基準配置文件" 運行配置,此操作會運行所含的基準配置文件生成器,并將生成的配置文件復制到src/release/generated/baselineProfile。
△ "生成基準配置文件" 運行配置
運行配置會調用 generateBaselineProfile 任務,查找所有基準配置文件生成器并只運行這些生成器。
BaselineProfileGenerator 是一個非常基礎的生成器,它只會啟動您的應用并等待應用啟動完成。我們建議為您應用的每個關鍵用戶歷程創建一個基準配置文件。由于不同應用的用戶歷程各不相同,您需要自行決定優化哪些內容。可以先從與業務成果直接相關的任何內容開始,如注冊、登錄、結帳或您應用提供的其他主要操作。您可以從我們的代碼示例中尋找靈感。
-
應用啟動
https://developer.android.google.cn/topic/performance/vitals/launch-time
-
代碼示例
http://github.com/android/performance-samples/tree/main/MacrobenchmarkSample
歡迎您立即下載 Android Studio Hedgehog Canary,開始體驗:
https://developer.android.google.cn/studio/preview
如需了解整個新手入門過程導覽,您可以查看已更新的 Codelab: 通過基準配置文件提升應用性能:
https://developer.android.google.cn/codelabs/android-baseline-profiles-improve
引入啟動配置文件
和 Dex 布局優化
自版本 8.1 起,Android Gradle 插件 (AGP) 便可將應用啟動所需的代碼導入應用的主要 Dex 文件。這項優化被稱為 Dex 布局優化,有助于減少應用啟動期間發生的 Dex 頁面錯誤。由于自應用啟動至應用完成啟動的整個過程只需加載一個 Dex 文件,這使得應用啟動速度大幅提升。
△Dex 布局優化前后
雖然 AGP 可以為您的應用創建單獨的 Dex 文件,但若沒有您的幫助,它無法知道是什么完全定義應用啟動。這時,啟動配置文件就可以派上用場了。您可以將啟動配置文件視作專為應用啟動定制的基準配置文件的一個子集。兩者擁有相同的格式,并且使用相同的底層技術。由于每個應用的啟動過程并不相同,庫對啟動配置文件毫無助益。
與需要解釋和 JIT 編譯的應用相比,基準配置文件使得性能提升了約 30 %,例如在推送更新后。我們對 Dex 布局優化進行的早期測試顯示,除了基準配置文件帶來的提升之外,這項優化使得應用啟動的性能額外提升了 30%。這些性能提升已經在冷啟動中十分常見,即使您的生產應用已經擁有運行良好的云配置文件,這項優化也會大有裨益。
如要充分利用 Dex 布局優化和啟動配置文件,您需要讓 Android 框架知道您的應用何時完成啟動。如果您什么都不做,此框架將在繪制第一幀時便認為應用已經完成啟動。為了確保啟動配置文件包含用戶接管之前的所有信息,請使用 reportFullyDrawn API。您可以通過 FullyDrawnReporter 或 Compose ReportDrawn API 實現這一點。此外,您需要定義啟動基準測試的終點,即您認為啟動完成的時間點。將 reportFullyDrawn 調用與您期望在應用可供使用時屏幕上顯示的內容相匹配。
-
FullyDrawnReporter
https://developer.android.google.cn/reference/kotlin/androidx/activity/FullyDrawnReporter
-
ReportDrawn
https://developer.android.google.cn/reference/kotlin/androidx/activity/compose/package-summary#ReportDrawn()
您可以在指導文檔中詳細了解 Dex 布局優化和啟動配置文件:
https://developer.android.google.cn/topic/performance/baselineprofiles/dex-layout-optimizations
Macrobenchmark 庫的
最新進展
Macrobenchmark 庫讓您可以衡量應用性能,創建基準配置文件并監控應用更改對應用性能有無影響。1.2.0 版將很快升級到 Beta 版。以下是一些功能亮點。
在基準測試中使用
全新 Android 平臺功能
在 Android 13 及更高版本中,您可以使用 BaselineProfileRule 在未取得 Root 權限的設備或模擬器上生成基準配置文件。
在 Android 14 及更高版本中,您不再需要每次運行基準測試時都重新安裝目標應用。這讓應用可以在運行之間保存狀態,如緩存、會話狀態或登錄令牌。此項更改讓您在檢測之前無需手動注入 (需要已取得 Root 權限的設備) 這些狀態。
新 API
基準配置文件生成已不再處于實驗階段
在使用 collectBaselineProfile 方法創建基準配置文件時,您可以選擇從代碼中刪除實驗性 API 注解。但如果您仍然使用實驗性 API,我們會提供一款新的 API 供您考慮。
新引入的 collectStableBaselineProfile 會運行并等待,直到系統認為配置文件對于給定迭代數量來說足夠穩定。這意味著您應用的基準配置文件將能更好地反映應用在執行代碼路徑時的具體操作。
fun profileGenerator() {
rule.collectStableBaselineProfile(
packageName = TARGET_PACKAGE,
maxIterations = 10
) {
profileBlock()
}
}
自定義跟蹤記錄處理讓指標更有效
PerfettoTraceRule 可以在測試中啟用自定義跟蹤記錄收集,而不再需要基準測試 (需要 API 級別 23 及以上)。這是一項非常強大的功能,讓用戶可以收集與測試相關的性能和時間數據。
PerfettoTraceProcessor 支持查詢跟蹤記錄內容,并且是所有現有 Macrobenchmark Metric API 的幕后引擎。現在,您可以將它與 TraceMetric 搭配使用,來制定完全自定義的指標,就像 Macrobenchmark 對 Perfetto 系統跟蹤記錄的任何信息所執行的操作一樣。這是另外一項強大的功能,便于用戶進一步自定義基準。
從基準測試中歸因功耗
全新 PowerMetric API 可用于衡量耗電量和電源狀態。這項非常有用的功能讓用戶可以跟蹤基準測試的耗電量。
問題修復和其他改進
Macrobenchmark 的幕后團隊還在人體工程學方面進行了多項改進,修復了錯誤,并改善了整體行為。如需了解詳情,您可以參閱官方文檔。若要深入了解,您可以查看所有版本說明,其中包含附加代碼和問題跟蹤。
-
官方文檔
https://developer.android.google.cn/topic/performance/benchmarking/macrobenchmark-overview
-
版本說明
https://developer.android.google.cn/jetpack/androidx/releases/benchmark
Android Studio 電源性能分析器
Android Studio Hedgehog 采用全新性能分析器,可以展示按照子系統 (如相機、GPS 等) 細分的實體設備的功耗情況。這些數據會在記錄系統跟蹤記錄時提供,并且有助于直觀地將設備功耗與應用中正在發生的操作關聯起來。例如,您可以執行 A/B 測試,批處理 API 和單獨調用 API,以優化蜂窩網絡電源軌中的功耗。
△Android Studio Hedgehog 中的全新電源性能分析器 (Power Profiler) 首先,使用 Pixel 6 及以上版本的設備記錄系統跟蹤記錄并將其加載至 Android Studio,或者使用性能分析器直接從附加設備捕獲系統跟蹤記錄。
- 記錄系統跟蹤記錄https://developer.android.google.cn/topic/performance/tracing
為什么需要重視性能
在處理應用性能時,找到正確的入手點并非易事。通過與 Android 開發者社區合作,我們發現工程師有時缺乏正確的信息來證明致力于提升應用性能的重要性。
提升性能對于用戶和企業來說有諸多優勢。對于用戶而言,能夠快速響應的應用可以帶來更出色的用戶體驗。您的用戶將能快速且輕松地獲得他們需要的信息,并且更有可能繼續使用您的應用。
對于企業而言,性能提升可以增加收入并降低成本。若用戶滿意您的應用,他們更有可能通過購買或其他操作,促進您的業務增長。此外,高性能應用有助于節省開發和維護成本。
后續步驟
- 借助全新 Gradle 插件設置您的應用,以開始使用基準配置文件
- 升級至 Android Gradle 插件 8 及以上版本
- 將現有基準配置文件移入新的默認目錄 src/main/baselineProfiles/
- 下載 Android Studio Hedgehog Canary,查看基準配置文件模板和電源性能分析器 (Power Profiler)
- 查看我們更新的 Codelab 獲取導覽
- 使用 Fully Drawn 和 collectStableBaselineProfile API,獲取更完善的基準配置文件
- 開始使用 Dex 布局優化,獲得更多性能提升
- 實施您的專屬 Macrobenchmark 測試,以衡量性能隨時間的變化情況
- 在 Pixel 6 及以上版本設備上記錄系統跟蹤,查看不同子系統 (相機、GPS、CPU 等) 的功耗
- 分享本文,幫助更多開發者提升應用性能
-
Gradle 插件
https://developer.android.google.cn/topic/performance/baselineprofiles/create-baselineprofile#baseline-profile-gradle-plugin
-
基準配置文件
https://developer.android.google.cn/topic/performance/baselineprofiles/overview
-
Android Studio Hedgehog
https://developer.android.google.cn/studio/preview
-
查看我們更新的 Codelab
https://developer.android.google.cn/codelabs/android-baseline-profiles-improve
-
Dex 布局優化
https://developer.android.google.cn/topic/performance/baselineprofiles/dex-layout-optimizations
?點擊屏末|閱讀原文|即刻使用基準配置文件
原文標題:在 I/O 看未來 | Android 性能相關最新動態
文章出處:【微信公眾號:谷歌開發者】歡迎添加關注!文章轉載請注明出處。
-
谷歌
+關注
關注
27文章
6164瀏覽量
105327
原文標題:在 I/O 看未來 | Android 性能相關最新動態
文章出處:【微信號:Google_Developers,微信公眾號:谷歌開發者】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論