DEX 程式碼最佳化

DEX 程式碼最佳化是 Android Vitals 的發現項目,可協助您監控及提升應用程式的編譯品質、大小和效能。使用 R8 或替代工具 (例如與 ProGuard 相容的最佳化工具或次要 DEX 後處理器) 最佳化及模糊化程式碼,可縮減應用程式的 DEX 大小、提升執行階段效能,並減少記憶體用量。

DEX (或 Dalvik Executable) 檔案包含用於執行應用程式的已編譯程式碼。這通常包括 Java 和 Kotlin 程式碼,而非已編譯的 C++ 程式碼或 .so 檔案。

Android Vitals 報表會針對所有應用程式和遊戲提供 DEX 程式碼最佳化指標,但只會對符合特定大小規定的應用程式和遊戲強制執行門檻。

偵測問題

當應用程式的 DEX 程式碼最佳化程度偏低時,Android Vitals 會發出提醒。包括使用 R8 的應用程式和遊戲的模糊處理、縮減和最佳化。如果應用程式未使用 R8,Android Vitals 會嘗試檢查最佳化、縮減和模糊處理率,但必要時會改用模糊處理啟發式方法做為 Proxy。

監控最佳化狀態

當應用程式未達到程式碼最佳化最低百分比時,Android Vitals 會透過 Play 管理中心發出提醒,藉此改善應用程式效能。如要詳細瞭解縮減、最佳化和模糊化,請參閱「使用 R8 設定分析器」。

如果是使用 AGP 8.10 以上版本的最新修補程式建構的應用程式,這些百分比會從隨附的 r8.json 檔案中擷取。

如果是較舊版本的 AGP,或是未納入 r8.json 檔案,系統會從 mapping.txt 檔案 (如有) 計算百分比,或是在沒有對應檔案的情況下,使用 DEX 啟發式方法。

如果應用程式是使用替代程式碼最佳化工具進行最佳化,Android Vitals 會執行分析,估算應用程式套件中模糊處理的類別、方法和欄位百分比。

DEX 總大小下限

Android Vitals 會計算所有應用程式的程式碼最佳化指標,但只有在應用程式套件符合下列 DEX 總大小規定時,您才會收到快訊:

  • 應用程式:套件包含至少 10 MB 的 DEX 程式碼 (以未壓縮大小計算)
  • 遊戲:套件包含至少 50 MB 的 DEX 程式碼 (以未壓縮大小計算)

Android Vitals 會顯示應用程式的 DEX 大小,但您也可以使用指令列在本機測量:

  unzip -l <yourapp>.aab | grep -E '\.dex$' | awk '{sum+=$1} END {print sum}'

如要檢查 Android Vitals 用來計算分數的確切中繼資料,請從應用程式套件中擷取 r8.json 檔案:

unzip -p <yourapp>.aab BUNDLE-METADATA/com.android.tools/r8.json