過去幾年來,我們一直致力于讓性能提升工作變得更易上手、回報(bào)更高。我們將在本文中分享這一領(lǐng)域的最新發(fā)展動(dòng)態(tài)。為您介紹基準(zhǔn)配置文件、Android Studio 中的工具改進(jìn)、庫(kù),以及我們?nèi)绾巫屵@項(xiàng)技術(shù)更好地在后臺(tái)為您服務(wù)。此外,我們非常高興地分享在基準(zhǔn)配置文件上使用的全新實(shí)驗(yàn)性技術(shù),助您大幅提升啟動(dòng)性能。歡迎您繼續(xù)閱讀以全面了解 2023 年 Google I/O 大會(huì)期間發(fā)布的 Android 性能的最新動(dòng)態(tài),我們也在本文結(jié)尾處與您分享了性能探索之旅中切實(shí)可行的舉措。
基準(zhǔn)配置文件更新
基準(zhǔn)配置文件可以通過避免即時(shí) (JIT) 編譯,將應(yīng)用啟動(dòng)和運(yùn)行時(shí)的代碼執(zhí)行速度提升約 30%。為此,我們構(gòu)建了多款工具來幫助您簡(jiǎn)化基準(zhǔn)配置文件的創(chuàng)建和維護(hù)工作,其中包括全新 Android Studio 模板和基準(zhǔn)配置文件 Gradle 插件。現(xiàn)在,您可以借助 Android Studio Hedgehog 和 Android Gradle 插件 8.0.0 或更新版本,即刻開始使用這兩款工具。
借助基準(zhǔn)配置文件 Gradle 插件
簡(jiǎn)化配置文件生成
基準(zhǔn)配置文件 Gradle 插件可以在本地開發(fā)和 CI 過程中,進(jìn)一步簡(jiǎn)化基準(zhǔn)配置文件的生成和維護(hù)過程。此插件可以執(zhí)行生成基準(zhǔn)配置文件和將其安裝到應(yīng)用模塊所需的所有必要步驟。 如要使用此插件,您可以在項(xiàng)目中添加一個(gè)插樁測(cè)試模塊,并設(shè)定一組通過在您的應(yīng)用中導(dǎo)航來模擬關(guān)鍵用戶歷程的測(cè)試。在運(yùn)行插樁測(cè)試時(shí),基準(zhǔn)配置文件 Gradle 插件會(huì)跟蹤在這類用戶歷程中執(zhí)行的所有類和方法,并基于這些類和方法生成基準(zhǔn)配置文件。然后,此插件會(huì)將生成的基準(zhǔn)配置文件復(fù)制到應(yīng)用模塊的源集中。 應(yīng)用此插件后,您可以使用構(gòu)建腳本中的全新 baselineProfile 塊對(duì)其進(jìn)行配置。generateBaselineProfile 任務(wù)會(huì)代您運(yùn)行所有基準(zhǔn)配置文件測(cè)試。由此生成的配置文件將存儲(chǔ)在生成的文件夾中,供您在此訪問。這些功能使得在本地和遠(yuǎn)程 CI 服務(wù)器上自動(dòng)生成基準(zhǔn)配置文件的過程更順暢。此外,通過指定要在生成配置文件時(shí)使用的 Gradle 管理的設(shè)備,您甚至不再需要附加實(shí)體設(shè)備。此插件的 DSL 支持高度可配置的設(shè)置,讓您可以自動(dòng)化并重現(xiàn)基準(zhǔn)配置文件生成過程。 您可以查看代碼示例 (目前位于單獨(dú)分支) 和指導(dǎo)文檔,即刻開始使用。
-
代碼示例
https://github.com/android/performance-samples/tree/bpgp/MacrobenchmarkSample
-
指導(dǎo)文檔
https://developer.android.google.cn/topic/performance/baselineprofiles/create-baselineprofile
使用 AGP 8 及以上版本創(chuàng)建和管理多個(gè)基準(zhǔn)配置文件源文件
AGP 8 及以上版本支持多源文件、多種特定配置文件和上方提及的新版 Gradle 插件,且支持更輕松地生成基準(zhǔn)配置文件。現(xiàn)在,基準(zhǔn)配置文件的默認(rèn)位置是 src/main/baselineProfiles/。此插件可將儲(chǔ)存在此目錄中的基準(zhǔn)配置文件源文件提取并合并到您的應(yīng)用中。幫助您單獨(dú)存儲(chǔ)應(yīng)用啟動(dòng)和每個(gè)不同的用戶歷程所需的配置文件。
使用 Android Studio 基準(zhǔn)配置文件生成器模板更輕松上手
為了幫助您開始使用基準(zhǔn)配置文件,Android Studio Hedgehog (2023.1.1) 添加了基準(zhǔn)配置文件生成器模塊向?qū)0濉J褂么四0澹膽?yīng)用可以通過視覺輔助方式設(shè)置基準(zhǔn)配置文件。 首先前往 "文件">"新建">"新模塊",然后在模板列表中選擇 "基準(zhǔn)配置文件生成器"。
操作完成后,此模板將為您進(jìn)行多項(xiàng)更改。它會(huì)創(chuàng)建包含基本生成器和基準(zhǔn)測(cè)試的全新 :baselineprofile 測(cè)試模板。BaselineProfileGenerator 類會(huì)為您創(chuàng)建基本基準(zhǔn)配置文件,而 StartupBenchmarks 可以驗(yàn)證一切是否合乎預(yù)期。此外,系統(tǒng)將在相關(guān)模塊中應(yīng)用基準(zhǔn)配置文件 Gradle 插件。最后,此生成器將添加有關(guān) androidx.profileinstaller 的依賴項(xiàng),以協(xié)助進(jìn)行本地驗(yàn)證并確保向后兼容性。
在這里,您只需執(zhí)行 "生成基準(zhǔn)配置文件" 運(yùn)行配置,此操作會(huì)運(yùn)行所含的基準(zhǔn)配置文件生成器,并將生成的配置文件復(fù)制到src/release/generated/baselineProfile。
運(yùn)行配置會(huì)調(diào)用 generateBaselineProfile 任務(wù),查找所有基準(zhǔn)配置文件生成器并只運(yùn)行這些生成器。
BaselineProfileGenerator 是一個(gè)非常基礎(chǔ)的生成器,它只會(huì)啟動(dòng)您的應(yīng)用并等待應(yīng)用啟動(dòng)完成。我們建議為您應(yīng)用的每個(gè)關(guān)鍵用戶歷程創(chuàng)建一個(gè)基準(zhǔn)配置文件。由于不同應(yīng)用的用戶歷程各不相同,您需要自行決定優(yōu)化哪些內(nèi)容。可以先從與業(yè)務(wù)成果直接相關(guān)的任何內(nèi)容開始,如注冊(cè)、登錄、結(jié)帳或您應(yīng)用提供的其他主要操作。您可以從我們的代碼示例中尋找靈感。
-
應(yīng)用啟動(dòng)
https://developer.android.google.cn/topic/performance/vitals/launch-time
-
代碼示例
http://github.com/android/performance-samples/tree/main/MacrobenchmarkSample
歡迎您立即下載 Android Studio Hedgehog Canary,開始體驗(yàn):
https://developer.android.google.cn/studio/preview
如需了解整個(gè)新手入門過程導(dǎo)覽,您可以查看已更新的 Codelab: 通過基準(zhǔn)配置文件提升應(yīng)用性能:
https://developer.android.google.cn/codelabs/android-baseline-profiles-improve
引入啟動(dòng)配置文件
和 Dex 布局優(yōu)化
自版本 8.1 起,Android Gradle 插件 (AGP) 便可將應(yīng)用啟動(dòng)所需的代碼導(dǎo)入應(yīng)用的主要 Dex 文件。這項(xiàng)優(yōu)化被稱為 Dex 布局優(yōu)化,有助于減少應(yīng)用啟動(dòng)期間發(fā)生的 Dex 頁面錯(cuò)誤。由于自應(yīng)用啟動(dòng)至應(yīng)用完成啟動(dòng)的整個(gè)過程只需加載一個(gè) Dex 文件,這使得應(yīng)用啟動(dòng)速度大幅提升。

△Dex 布局優(yōu)化前后
雖然 AGP 可以為您的應(yīng)用創(chuàng)建單獨(dú)的 Dex 文件,但若沒有您的幫助,它無法知道是什么完全定義應(yīng)用啟動(dòng)。這時(shí),啟動(dòng)配置文件就可以派上用場(chǎng)了。您可以將啟動(dòng)配置文件視作專為應(yīng)用啟動(dòng)定制的基準(zhǔn)配置文件的一個(gè)子集。兩者擁有相同的格式,并且使用相同的底層技術(shù)。由于每個(gè)應(yīng)用的啟動(dòng)過程并不相同,庫(kù)對(duì)啟動(dòng)配置文件毫無助益。
與需要解釋和 JIT 編譯的應(yīng)用相比,基準(zhǔn)配置文件使得性能提升了約 30 %,例如在推送更新后。我們對(duì) Dex 布局優(yōu)化進(jìn)行的早期測(cè)試顯示,除了基準(zhǔn)配置文件帶來的提升之外,這項(xiàng)優(yōu)化使得應(yīng)用啟動(dòng)的性能額外提升了 30%。這些性能提升已經(jīng)在冷啟動(dòng)中十分常見,即使您的生產(chǎn)應(yīng)用已經(jīng)擁有運(yùn)行良好的云配置文件,這項(xiàng)優(yōu)化也會(huì)大有裨益。
如要充分利用 Dex 布局優(yōu)化和啟動(dòng)配置文件,您需要讓 Android 框架知道您的應(yīng)用何時(shí)完成啟動(dòng)。如果您什么都不做,此框架將在繪制第一幀時(shí)便認(rèn)為應(yīng)用已經(jīng)完成啟動(dòng)。為了確保啟動(dòng)配置文件包含用戶接管之前的所有信息,請(qǐng)使用 reportFullyDrawn API。您可以通過 FullyDrawnReporter 或 Compose ReportDrawn API 實(shí)現(xiàn)這一點(diǎn)。此外,您需要定義啟動(dòng)基準(zhǔn)測(cè)試的終點(diǎn),即您認(rèn)為啟動(dòng)完成的時(shí)間點(diǎn)。將 reportFullyDrawn 調(diào)用與您期望在應(yīng)用可供使用時(shí)屏幕上顯示的內(nèi)容相匹配。
-
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()
您可以在指導(dǎo)文檔中詳細(xì)了解 Dex 布局優(yōu)化和啟動(dòng)配置文件:
https://developer.android.google.cn/topic/performance/baselineprofiles/dex-layout-optimizations
Macrobenchmark 庫(kù)的
最新進(jìn)展
Macrobenchmark 庫(kù)讓您可以衡量應(yīng)用性能,創(chuàng)建基準(zhǔn)配置文件并監(jiān)控應(yīng)用更改對(duì)應(yīng)用性能有無影響。1.2.0 版將很快升級(jí)到 Beta 版。以下是一些功能亮點(diǎn)。
在基準(zhǔn)測(cè)試中使用
全新 Android 平臺(tái)功能
在 Android 13 及更高版本中,您可以使用 BaselineProfileRule 在未取得 Root 權(quán)限的設(shè)備或模擬器上生成基準(zhǔn)配置文件。
在 Android 14 及更高版本中,您不再需要每次運(yùn)行基準(zhǔn)測(cè)試時(shí)都重新安裝目標(biāo)應(yīng)用。這讓應(yīng)用可以在運(yùn)行之間保存狀態(tài),如緩存、會(huì)話狀態(tài)或登錄令牌。此項(xiàng)更改讓您在檢測(cè)之前無需手動(dòng)注入 (需要已取得 Root 權(quán)限的設(shè)備) 這些狀態(tài)。
新 API
基準(zhǔn)配置文件生成已不再處于實(shí)驗(yàn)階段
在使用 collectBaselineProfile 方法創(chuàng)建基準(zhǔn)配置文件時(shí),您可以選擇從代碼中刪除實(shí)驗(yàn)性 API 注解。但如果您仍然使用實(shí)驗(yàn)性 API,我們會(huì)提供一款新的 API 供您考慮。
新引入的 collectStableBaselineProfile 會(huì)運(yùn)行并等待,直到系統(tǒng)認(rèn)為配置文件對(duì)于給定迭代數(shù)量來說足夠穩(wěn)定。這意味著您應(yīng)用的基準(zhǔn)配置文件將能更好地反映應(yīng)用在執(zhí)行代碼路徑時(shí)的具體操作。
fun profileGenerator() {
rule.collectStableBaselineProfile(
packageName = TARGET_PACKAGE,
maxIterations = 10
) {
profileBlock()
}
}
自定義跟蹤記錄處理讓指標(biāo)更有效
PerfettoTraceRule 可以在測(cè)試中啟用自定義跟蹤記錄收集,而不再需要基準(zhǔn)測(cè)試 (需要 API 級(jí)別 23 及以上)。這是一項(xiàng)非常強(qiáng)大的功能,讓用戶可以收集與測(cè)試相關(guān)的性能和時(shí)間數(shù)據(jù)。
PerfettoTraceProcessor 支持查詢跟蹤記錄內(nèi)容,并且是所有現(xiàn)有 Macrobenchmark Metric API 的幕后引擎。現(xiàn)在,您可以將它與 TraceMetric 搭配使用,來制定完全自定義的指標(biāo),就像 Macrobenchmark 對(duì) Perfetto 系統(tǒng)跟蹤記錄的任何信息所執(zhí)行的操作一樣。這是另外一項(xiàng)強(qiáng)大的功能,便于用戶進(jìn)一步自定義基準(zhǔn)。
從基準(zhǔn)測(cè)試中歸因功耗
全新 PowerMetric API 可用于衡量耗電量和電源狀態(tài)。這項(xiàng)非常有用的功能讓用戶可以跟蹤基準(zhǔn)測(cè)試的耗電量。
問題修復(fù)和其他改進(jìn)
Macrobenchmark 的幕后團(tuán)隊(duì)還在人體工程學(xué)方面進(jìn)行了多項(xiàng)改進(jìn),修復(fù)了錯(cuò)誤,并改善了整體行為。如需了解詳情,您可以參閱官方文檔。若要深入了解,您可以查看所有版本說明,其中包含附加代碼和問題跟蹤。
-
官方文檔
https://developer.android.google.cn/topic/performance/benchmarking/macrobenchmark-overview
-
版本說明
https://developer.android.google.cn/jetpack/androidx/releases/benchmark
Android Studio 電源性能分析器
Android Studio Hedgehog 采用全新性能分析器,可以展示按照子系統(tǒng) (如相機(jī)、GPS 等) 細(xì)分的實(shí)體設(shè)備的功耗情況。這些數(shù)據(jù)會(huì)在記錄系統(tǒng)跟蹤記錄時(shí)提供,并且有助于直觀地將設(shè)備功耗與應(yīng)用中正在發(fā)生的操作關(guān)聯(lián)起來。例如,您可以執(zhí)行 A/B 測(cè)試,批處理 API 和單獨(dú)調(diào)用 API,以優(yōu)化蜂窩網(wǎng)絡(luò)電源軌中的功耗。
- 記錄系統(tǒng)跟蹤記錄https://developer.android.google.cn/topic/performance/tracing
為什么需要重視性能
在處理應(yīng)用性能時(shí),找到正確的入手點(diǎn)并非易事。通過與 Android 開發(fā)者社區(qū)合作,我們發(fā)現(xiàn)工程師有時(shí)缺乏正確的信息來證明致力于提升應(yīng)用性能的重要性。
提升性能對(duì)于用戶和企業(yè)來說有諸多優(yōu)勢(shì)。對(duì)于用戶而言,能夠快速響應(yīng)的應(yīng)用可以帶來更出色的用戶體驗(yàn)。您的用戶將能快速且輕松地獲得他們需要的信息,并且更有可能繼續(xù)使用您的應(yīng)用。
對(duì)于企業(yè)而言,性能提升可以增加收入并降低成本。若用戶滿意您的應(yīng)用,他們更有可能通過購(gòu)買或其他操作,促進(jìn)您的業(yè)務(wù)增長(zhǎng)。此外,高性能應(yīng)用有助于節(jié)省開發(fā)和維護(hù)成本。
后續(xù)步驟
- 借助全新 Gradle 插件設(shè)置您的應(yīng)用,以開始使用基準(zhǔn)配置文件
- 升級(jí)至 Android Gradle 插件 8 及以上版本
- 將現(xiàn)有基準(zhǔn)配置文件移入新的默認(rèn)目錄 src/main/baselineProfiles/
- 下載 Android Studio Hedgehog Canary,查看基準(zhǔn)配置文件模板和電源性能分析器 (Power Profiler)
- 查看我們更新的 Codelab 獲取導(dǎo)覽
- 使用 Fully Drawn 和 collectStableBaselineProfile API,獲取更完善的基準(zhǔn)配置文件
- 開始使用 Dex 布局優(yōu)化,獲得更多性能提升
- 實(shí)施您的專屬 Macrobenchmark 測(cè)試,以衡量性能隨時(shí)間的變化情況
- 在 Pixel 6 及以上版本設(shè)備上記錄系統(tǒng)跟蹤,查看不同子系統(tǒng) (相機(jī)、GPS、CPU 等) 的功耗
- 分享本文,幫助更多開發(fā)者提升應(yīng)用性能
-
Gradle 插件
https://developer.android.google.cn/topic/performance/baselineprofiles/create-baselineprofile#baseline-profile-gradle-plugin
-
基準(zhǔn)配置文件
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 布局優(yōu)化
https://developer.android.google.cn/topic/performance/baselineprofiles/dex-layout-optimizations

原文標(biāo)題:在 I/O 看未來 | Android 性能相關(guān)最新動(dòng)態(tài)
文章出處:【微信公眾號(hào):谷歌開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
谷歌
+關(guān)注
關(guān)注
27文章
6223瀏覽量
107520
原文標(biāo)題:在 I/O 看未來 | Android 性能相關(guān)最新動(dòng)態(tài)
文章出處:【微信號(hào):Google_Developers,微信公眾號(hào):谷歌開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
MAX7325 I2C端口擴(kuò)展器,提供8路推挽式I/O和8個(gè)漏極開路I/O技術(shù)手冊(cè)

谷歌I/O 2025大會(huì)前透露:Android 16接入Gemini,智能手機(jī)、XR設(shè)備升級(jí)

簡(jiǎn)儀科技高性能PXI模擬I/O模塊JY-951概述
如何基于Android 14在i.MX95 EVK上運(yùn)行Deepseek-R1-1.5B和性能
LLC動(dòng)態(tài)性能分析

I/O接口與I/O端口的區(qū)別
E系列I/O模塊在光伏制絨設(shè)備的應(yīng)用

物聯(lián)網(wǎng)中常見的I/O擴(kuò)展電路設(shè)計(jì)方案_IIC I/O擴(kuò)展芯片

在低成本MSP430 MCU中集成I2C I/O擴(kuò)展器

保護(hù)I/O模塊免受浪涌事件的影響

評(píng)論