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。