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

目录
相关文章
|
2月前
|
Android开发
安卓逆向 -- Hook多个dex文件
安卓逆向 -- Hook多个dex文件
19 1
|
12月前
|
Dart Java 编译器
Android编译器及编译工具之编译器
习惯了IDE以及各种现成的编译工具为我们提供便捷的编译方式,我们很少会操心编译工具的编译过程和原理,但是工具越高级,隐藏的细节就越多,这样编译遇到问题时我们难以定位,遇到复杂的项目(尤其跨平台项目难以用ide)时不知如何下手。所以准备写两篇关于编译器和编译工具的文章。本文先来介绍编译工具。
147 0
|
10月前
|
Java 开发工具 Android开发
Android dx工具(jar包转成dex格式二进制jar包工具)
Android dx工具(jar包转成dex格式二进制jar包工具)
616 0
|
12月前
|
XML Java 编译器
Android编译器及编译工具之编译工具
Apache Ant 是由 Java 语言开发的工具,由 Apache 软件基金会所提供。Ant 是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。Apache Ant 的配置文件写成 XML 容易维护和书写,而且结构很清晰。
345 0
|
IDE Java 编译器
Android要求编译器符合级别5.0或6.0发现“ 1.7”请使用Android工具>修复项目属性
Android要求编译器符合级别5.0或6.0发现“ 1.7”请使用Android工具>修复项目属性
221 0
|
Android开发
安卓逆向 -- Hook多个dex文件
安卓逆向 -- Hook多个dex文件
150 0
安卓逆向 -- Hook多个dex文件
|
Android开发
[RK3568][Android11]Android dex文件生成流程
[RK3568][Android11]Android dex文件生成流程
129 0
[RK3568][Android11]Android dex文件生成流程
|
Java Android开发
Android反编译:使用dex2jar查看dex文件
Android反编译:使用dex2jar查看dex文件
442 0
|
存储 安全 IDE
android studio 输出apk过程,apk中的文件格式(bsh文件,dex文件),JVM、DVM、ART的区别,IOS与安卓的区别,ART和Dalvi
android studio 输出apk过程,apk中的文件格式(bsh文件,dex文件),JVM、DVM、ART的区别,IOS与安卓的区别,ART和Dalvi
211 0
android studio 输出apk过程,apk中的文件格式(bsh文件,dex文件),JVM、DVM、ART的区别,IOS与安卓的区别,ART和Dalvi
|
Java
Cause: com.android.dex.DexException: Multiple dex files define Lcom
Cause: com.android.dex.DexException: Multiple dex files define Lcom
162 0
Cause: com.android.dex.DexException: Multiple dex files define Lcom