下一代Dex編譯器現已進入預覽階段
文 / 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 檔案中進行以下設定:
我們在許多應用上測試了 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 編譯吧!
檢視全文及文中連結,請點選文末“閱讀原文”。
推薦閱讀:
相關文章
- c++進階(一)C語言條件編譯及編譯預處理階段C++C語言編譯
- 編譯的各個階段編譯
- 工業機器人的發展已經進入到量化生產的階段機器人
- 【Linux】中預設文字編輯器 vim 的入門與進階Linux
- Vue原始碼模板編譯階段----HTML解析器腦圖Vue原始碼編譯HTML
- CSS預編譯器CSS編譯
- MSBuild + MSILInect實現編譯時AOP之預覽UI編譯
- stylus(css預編譯器)CSS編譯
- javascript引擎執行的過程的理解--語法分析和預編譯階段JavaScript語法分析編譯
- 【國外精選課程】編譯原理入門之編譯階段概述編譯原理
- apktool + smali + dex2jar + jdgui實現apk反編譯APKJARGUI編譯
- Babel:下一代Javascript語法編譯器BabelJavaScript編譯
- VueJS 的編譯階段到掛載節點VueJS編譯
- gcc編譯階段列印巨集定義的內容GC編譯
- 【C進階】22、條件編譯分析編譯
- BAT教育佈局 進入“收網”階段BAT
- Rust 編譯器入門Rust編譯
- 亞馬遜擴增實境眼鏡進入研發階段 已獲相關專利亞馬遜
- 編寫一個 Makefile 檔案,對階段專案一的程式碼進行自動化編譯編譯
- 線段樹進階
- 蘋果企業賬號:蘋果iPhone SE 2已進入最後生產驗證階段蘋果iPhone
- 遊戲行業進入“嚴查版號”階段!遊戲行業
- 基於react的 markdown 輸入 + 即時預覽線上編輯器React
- Multidex(二)之 Dex 預載入優化IDE優化
- JIT 編譯器快速入門編譯
- 走進Golang之編譯器原理Golang編譯
- 實現微信小程式編譯和執行環境系列(進階篇)微信小程式編譯
- 全球集執行情進入第三階段:“紊亂”
- 資料中心NVMe SSD進入PCle5.0階段
- windows搭建chromium瀏覽器編譯環境Windows瀏覽器編譯
- 【編譯器001-001】總覽編譯
- web前端進階篇(二) 瀏覽器 WebpackWeb前端瀏覽器
- Android進階2之WebView(瀏覽器)AndroidWebView瀏覽器
- #ifndef預編譯編譯
- GCC的-g選項應該在編譯階段起作用(轉)GC編譯
- 階段性進展:開源資料庫已開始得寵(轉)資料庫
- 編譯原理概覽編譯原理
- 關於筆記軟體Obsidian實時預覽出現前段預覽,後段不預覽的解決方案筆記