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

文章推薦指數: 80 %
投票人數:10人

文 / Google 產品經理 James Lau

Android 開發者都知道,Dex 編譯是 APK 構建過程中非常關鍵的一步。

在此編譯過程中,將 .class 字節碼轉換為用於 Android 運行時(對於較早版本的 Android,則是用於 Dalvik)的 .dex 字節碼。

在您的日常應用開發過程中,Dex 編譯器大多在後台運行,但它會直接影響應用的構建時間、.dex 文件的大小和運行時性能。

正因如此,我們投入大量精力,對 Dex 編譯器做出了一些重要的改進。

我們很興奮地宣布:作為 Android Studio 3.0 測試版的一部分,下一代 Dex 編譯器 D8 現已開放預覽。

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

何不試一下?

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 之後,它們仍可繼續正確工作。


請為這篇文章評分?


相關文章 

WebAssembly,Web的新時代

在瀏覽器之爭中,Chrome憑藉JavaScript的卓越性能取得了市場主導地位,然而由於JavaScript的無類型特性,導致其運行時消耗大量的性能做為代價,這也是JavaScript的瓶頸之...