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 编译速度和文件大小上有所对比:
![](https://i-blog.csdnimg.cn/blog_migrate/00d59499d066e811ea29f6d3aafcd850.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9005d95669bf472afb7be12db90c3ccf.png)
大家也可以亲自体验一下 D8 的效果。如果你使用的 Android Studio 还是 3.0 版本,可以在项目的 gradle.properties
文件手动开启 D8 编译器:
android.enableD8=true
不止于此,Google 在代码压缩和优化上也在不断寻求进步。目前我们广泛使用的 ProGuard 工具也将有新的替代者:R8。不过,R8 R8 还没有正式被融入使用,其所在的开源地址为:
https://r8.googlesource.com/r8
感兴趣的朋友不妨根据文档,研究一下 R8 的使用。
推荐阅读:分享一份 Kotlin 学习资料 和 一个老外的清明节故事TIOBE 语言排行榜更新,那些全栈工程师累吗?