天天看點

Android D8,下一代 dex 編譯器

Google 在剛剛釋出的 Android Studio 3.1 新版本中,将 D8 作為新版本開發工具預設的 Dex 編譯器。那麼什麼是 D8 呢,D8 與之前的 Dex 打包器有何差別呢?

大家知道,安卓項目在打包生成 Apk 安裝檔案的過程中,最重要的一步便是将我們所寫的 java 代碼編譯過成 .class 位元組檔案再打包轉化成一個或多個 .dex 格式的代碼壓縮檔案。這種 dex 檔案便是 Android 虛拟機所能識别、解析并運作的程式。

Google 一直在緻力于提升 Dex 檔案的編譯和運作優化工作,并開發出稱之為下一代 dex 編譯器:D8。其實早在 AS 3.0 Beta 版本中,Google 已經引入 D8 的測試使用。直到目前 3.1 新版本的釋出,才正式将其作為預設 Dex 編譯器。

根據官方介紹,新版 D8 Dex 編譯器相比之前稱之為 DX 的舊版編譯器,在 dex 檔案的編譯和使用上,至少具備這麼三個優勢:

1,更快的編譯速度;

2,更小的檔案大小;

3,更優的運作性能。

下面是來自來Google 的官方測試資料,分别使用Dex 和D8來猜測是編譯速度和檔案大小。

如果你使用的 Android Studio 還是 3.0 版本,可以在項目的 gradle.properties 檔案手動開啟 D8 編譯器。相關的配置如下:

android.enableD8=true           

不止于此,Google 在代碼壓縮和優化上也在不斷尋求進步。目前我們廣泛使用的

ProGuard 工具

也将有新的替代者:

R8

。不過,R8 R8 還沒有正式被融入使用,其所在的開源位址為:

https://r8.googlesource.com/r8

繼續閱讀