下一代Dex編譯器現已進入預覽階段

谷歌開發者_發表於2017-08-18

文 / Google 產品經理 James Lau

Android 開發者都知道,Dex 編譯是 APK 構建過程中非常關鍵的一步。在此編譯過程中,將 .class 位元組碼轉換為用於 Android 執行時(對於較早版本的 Android,則是用於 Dalvik)的 .dex 位元組碼。在您的日常應用開發過程中,Dex 編譯器大多在後臺執行,但它會直接影響應用的構建時間、.dex 檔案的大小和執行時效能。

正因如此,我們投入大量精力,對 Dex 編譯器做出了一些重要的改進。我們很興奮地宣佈:作為 Android Studio 3.0 測試版的一部分,下一代 Dex 編譯器 D8 現已開放預覽。

與當前 DX 編譯器相比,D8 的編譯速度更快,輸出的 .dex 檔案更小,同時卻能保持相同乃至更出色的應用執行時效能。


640?wx_fmt=png

640?wx_fmt=png



何不試一下?

D8 預覽版將隨 Android Studio 3.0 測試版一起開始提供。要試用此預覽版,您可以在專案的 gradle.properties 檔案中進行以下設定:

android.enableD8=true


我們在許多應用上測試了 D8 的正確性和效能,結果鼓舞人心。我們有足夠的信心,相信我們改用 D8 作為構建 AOSP 的預設 Dex 編譯器會取得成功。



後續計劃

我們計劃在未來幾個月內隨 Android Studio 3.0 版一起開放 D8 預覽。在此期間,我們將重點解決我們從社群收到的任何關鍵錯誤報告。我們計劃在 Android Studio 3.1 中結束 D8 預覽並將其作為預設 Dex 編譯器。屆時,DX 編譯器將正式進入維護模式。此後,將只修復 DX 的關鍵問題。

除 D8 之外,我們還在開發 R8,後者用於取代 Proguard 對整個程式進行精簡和優化。儘管 R8 專案已經開放原始碼:

https://r8.googlesource.com/r8


但目前尚未整合到 Android Gradle 外掛中。不久之後,當我們準備面向社群開放 R8 預覽時,我們將提供更多相關詳情。



工具開發者:讓您的位元組碼工具做好迎接 Java 8 的準備

4 月,我們宣佈推出 Java 8 語言脫糖功能。目前,在 Java 編譯 (javac) 之後,在執行任何位元組碼讀取或重寫工具之前,會立即執行脫糖步驟。未來兩個月,脫糖步驟將會作為 D8 的一部分,移到整個管道後面一個階段中。這樣,我們將可以進一步縮短總體構建時間並生成更優化的程式碼。這一變更意味著任何位元組碼或重寫工具將在脫糖步驟之前執行。


如果您在開發用於 Android 的 .class 位元組碼讀取或重寫工具,您將需要確保它們能夠處理 Java 8 位元組碼格式,以便在我們將脫糖步驟移入 D8 之後,它們仍可繼續正確工作。

盡情體驗 Dex 編譯吧!


檢視全文及文中連結,請點選文末“閱讀原文”。


推薦閱讀:

Android O中的Seccomp過濾器

如何利用Sanitizer解決Android中的Bug?

Android測試支援庫1.0現已釋出!

Google最新開發者新聞快報 #79


640?wx_fmt=gif

相關文章