Google在Android Gradle Plugin(AGP)8.12中新增最佳化資源縮減(Optimized Resource Shrinking)工作管線,讓資源縮減能與R8程式碼最佳化同時進行。對於已在專案中啟用R8工具與資源縮減的開發者,只要在gradle.properties開啟相關旗標,即可利用這項功能,進一步降低安裝檔大小,並改善啟動速度、算繪表現與應用程式無回應(Application Not Responding,ANR)的情況。

R8是Android建置過程中,用於程式碼縮減、最佳化和混淆的工具,能移除未使用的程式碼、縮小應用程式大小,並提升執行效能。

傳統流程中,AAPT2(Android Asset Packaging Tool 2)會替資源參照產生無條件保留規則(Unconditional Keep Rules),使得被資源參照的類別在後續R8縮減時一律保留,而R8完成程式碼縮減後,再掃描剩餘程式碼建構資源參照圖。由於這些規則偏保守,常連帶保留本可移除的程式碼與其參照的資源,降低縮減效果。

新的整合流程由R8同步最佳化程式碼格式與資源參照,能精確找出僅由未使用程式碼參照的資源,並加以移除,不再依賴AAPT2產生的無條件保留規則,此作法同時為程式碼與資源提供更細緻的可刪除性資訊,提升刪除效率並降低錯誤保留的情況。Google建議在正式版(Release)建置使用,以避免影響除錯與測試。

最佳化的實際效益會因專案規模與結構而不同,對於跨裝置共用大量資源的應用程式,新的整合流程可能帶來明顯的大小縮減,小型應用雖然空間節省有限,但仍能受惠於更一致的縮減結果。Google提供的資料顯示,部分專案的安裝包大小甚至可降低超過50%。

AGP 8.12僅提供此功能作為選項,開發者需手動開啟,不過,從AGP 9.0開始,最佳化資源縮減就會成為預設行為,只要專案啟用了資源縮減,便自動使用新的整合流程。

熱門新聞

Advertisement