作者 | Sergio De Simone
譯者 | 田橙
Google 宣布,在最新版本的 Android Gradle Plugin(AGP)中引入了一種全新的資源壓縮優(yōu)化方案,將代碼優(yōu)化與資源壓縮合并處理。在同時(shí)支持多種設(shè)備形態(tài)、并大量共享代碼和資源的應(yīng)用上,這一方案能讓體積縮減幅度最高達(dá)到 50%。
在這一新方法中,Android 長期使用的優(yōu)化器 R8 可以同時(shí)處理代碼和資源引用,從而識(shí)別出那些只被無用代碼引用的資源,并將它們連同對(duì)應(yīng)的冗余代碼一起移除。
這意味著,AAPT2 不必再生成那些一刀切的保留規(guī)則;取而代之,開發(fā)者能獲得更精準(zhǔn)的分析信息,從而更有針對(duì)性地移除無用代碼和資源。
在舊版本中,AAPT2 會(huì)在 R8 優(yōu)化代碼之前生成無條件保留規(guī)則,這些規(guī)則經(jīng)常會(huì)誤保留一些無用代碼,進(jìn)而阻止 R8 清理掉相關(guān)的冗余資源。
Google 表示:“在新的 R8 優(yōu)化流程下,對(duì)于跨多種設(shè)備形態(tài)共享大量代碼和資源的應(yīng)用,體積縮減效果可超過 50%,對(duì)于中小型應(yīng)用也有顯著提升?!?/p>
隨著新優(yōu)化機(jī)制的引入,開發(fā)者目前可選擇四種不同的應(yīng)用優(yōu)化方式:
不進(jìn)行優(yōu)化
僅使用 R8
使用 R8 并啟用資源壓縮
啟用優(yōu)化版資源壓縮
這幾種方式效果依次遞進(jìn)。啟用 R8 可以減小 DEX 文件體積;在此基礎(chǔ)上,啟用資源壓縮會(huì)移除 res 文件夾和資源表中未使用的資源,但不會(huì)進(jìn)一步減少 DEX 大?。欢鴥?yōu)化版資源壓縮還能同時(shí)追蹤代碼和資源的引用,把冗余的資源和 DEX 代碼一起清理掉,從而讓應(yīng)用體積進(jìn)一步縮小。
AGP 8.12.0 已提供這一全新的資源壓縮流程,開發(fā)者可自行選擇啟用。要啟用它,開發(fā)者需在 AGP 配置中寫入:
android {
buildTypes {
release {
isMinifyEnabled = true
isShrinkResources = true
…
}
}
}
在即將發(fā)布的 AGP 9 中,這一優(yōu)化行為將成為默認(rèn)設(shè)置。
應(yīng)用體積縮減的好處不僅體現(xiàn)在更快的下載速度、更快的安裝過程和更低的內(nèi)存占用,還能帶來更快的啟動(dòng)時(shí)間、更流暢的渲染表現(xiàn),并減少 ANR(應(yīng)用無響應(yīng))的發(fā)生——這種問題通常是由于應(yīng)用的 UI 線程長時(shí)間被阻塞導(dǎo)致的。
https://www.infoq.com/news/2025/09/android-optimized-R8/
聲明:本文為 InfoQ 翻譯,未經(jīng)許可禁止轉(zhuǎn)載。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.