啟動時間的重要性
應用性能和用戶參與度的相關性在許多應用中都有所體現。用戶希望應用響應迅速且能快速加載,而啟動時間就是衡量應用性能和質量的主要指標之一。
我們的一些合作伙伴已經投入大量時間和資源來優化應用啟動情況。例如,您可以閱讀了解 Facebook 的優化歷程。
本文我們將討論基準配置文件和其改善應用和開發庫性能的方式,包括它們如何將啟動時間縮短了最高 40%。雖然本文側重于應用啟動,但是基準配置文件也可以極大改善卡頓情況。
回顧
Android 9 (API 級別 28) 在 Play Cloud 中引入了 ART 優化配置文件,以縮短應用啟動時間。在云配置文件可用時,我們看到應用的冷啟動在不同設備上平均快了至少 15%。
配置文件的工作原理
當應用在安裝或更新后首次啟動時,它的代碼以解釋模式運行,直到被 JIT。由于存儲和加載完全編譯的應用所需的開銷較大,自 Android 6 開始,Java 和 Kotlin 代碼在 APK 中編譯為 dex 字節碼,而不是完全編譯為機器代碼。應用中經常被使用以及用于應用啟動的類和方法,都會被寫入配置文件。一旦設備進入閑置模式,ART 就基于這些配置文件編譯應用,以加快后續的應用啟動。
從 Android 9 (API 級別 28) 開始,Google Play 也會提供云配置文件。當應用在設備上運行時,ART 生成的配置文件由 Play 商店應用上傳并在云端聚合。為應用上傳了足夠的配置文件后,Play 應用將使用聚合的配置文件來進行后續的安裝。
存在的問題
雖然云配置文件在可用時很有幫助,但并非總是在應用安裝后即可使用。收集和聚合配置文件通常要幾天時間,而許多應用會每周更新,這就是問題所在。而且許多用戶會在云配置文件可用之前安裝更新。Google Android 團隊開始尋找其他方法來改善配置文件延遲。
解決方案
基準配置文件是提供配置文件的一個全新機制,可在 Android 7 (API 級別 24) 和更高版本上使用。基準配置文件是由 Android Gradle 插件生成的 ART 配置文件,使用可由應用和庫提供的人類可讀懂的配置文件格式。示例如下:?
HSPLandroidx/compose/runtime/ComposerImpl;->updateValue(Ljava/lang/Object;)V
HSPLandroidx/compose/runtime/ComposerImpl;->updatedNodeCount(I)I
HLandroidx/compose/runtime/ComposerImpl;->validateNodeExpected()V
PLandroidx/compose/runtime/CompositionImpl;->applyChanges()V
HLandroidx/compose/runtime/ComposerKt;->findLocation(Ljava/util/List;I)I
二進制文件存儲在 APK 資源目錄中的特定位置 (assets/dexopt/baseline.prof)。
基準配置文件在構建時創建,作為 APK 的一部分發送到 Play 中,然后在下載應用時,從 Play 發送至用戶。基準配置文件在云配置文件尚不可用時,填補了 ART 云配置文件流水線中的空白,在云配置文件可用時,則會自動與其合并?;鶞逝渲梦募畲蟮膬瀯葜皇强梢栽诒镜亻_發和評估,這樣開發者可以看到真實的最終用戶性能改進情況。它們還支持較低的 Android 版本 (7 和更高版本),而云配置文件只在 Android 9 及以上版本中提供。
影響
應用開發者
2021 年初,Google 地圖的發布周期從兩周改為一周。更頻繁的更新意味著更頻繁地舍棄本地預編譯,以及更多用戶在沒有 Play Cloud 配置文件的情況下,遇到啟動緩慢的情況。通過使用基準配置文件,Google 地圖將平均啟動時間縮短了 30%,搜索速度相應增長了 2.4%,對于這樣一個成熟的應用來說,這是巨大的性能改進。
庫開發者
庫中的代碼與應用中的代碼類似,默認都不是完全編譯,如果它在啟動的關鍵路徑中發揮重要作用,則可能存在問題。
Jetpack Compose 是一個不屬于 Android 系統映像的界面庫,因此與大多數 Android 視圖工具包代碼不同,它在安裝時并未完全編譯。這導致了性能問題,尤其是在應用前幾次冷啟動時。
為解決這一問題,Compose 使用了配置文件安裝程序。該程序附帶了基準配置文件規則,可以縮短 Compose 應用的啟動時間并減少卡頓。
Google Play 商店的搜索結果頁已經使用 Compose 進行重寫。在集成 Compose 的基準配置文件規則后,渲染初始搜索結果頁 (包括圖像) 的時間縮短了約 40%。
Android 團隊還將基準配置文件添加到了相關的 AndroidX 庫。這可讓所有使用這些庫的 Android 應用受益。ConstraintLayout 發現附帶的配置文件規則將動畫幀時間縮短了超過 1 毫秒。
如何使用基準配置文件
創建自定義基準配置文件
所有應用和庫開發者都可以從添加基準配置文件中獲益。理想狀態下,開發者為最關鍵的用戶旅程創建配置文件,來確保不管云配置文件是否可用,這些旅程都擁有始終快速的性能。您可以查看詳細指南,了解如何為應用和庫開發者設置基準配置文件。
更新依賴項
如果您還未準備好為應用生成基準配置文件,您仍然可以受益于更新依賴項。如果您使用 Android Gradle 插件 7.1.0-alpha05 或更高版本構建應用,您將獲得包含在 APK 中的基準配置文件,這些配置文件已經由庫 (例如 Jetpack) 提供。Google Play 在安裝時借助這些配置文件編譯應用。您可以將這些配置文件作為構建應用的補充部分。
衡量改進情況
不要忘記衡量應用改進情況。您可以按照步驟操作,了解如何在本地衡量使用生成的配置文件的啟動情況,也歡迎您持續關注我們了解更多最新內容。
原文標題:通過基準配置文件改善應用性能
文章出處:【微信公眾號:谷歌開發者】歡迎添加關注!文章轉載請注明出處。
審核編輯:湯梓紅
-
Android
+關注
關注
12文章
3937瀏覽量
127482 -
工作原理
+關注
關注
4文章
277瀏覽量
37766
原文標題:通過基準配置文件改善應用性能
文章出處:【微信號:Google_Developers,微信公眾號:谷歌開發者】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論