D8,下一代 dex 编译器

Posted 安卓笔记侠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,下一代 dex 编译器

大家也可以亲自体验一下 D8 的效果。如果你使用的 Android Studio 还是 3.0 版本,可以在项目的 gradle.properties 文件手动开启 D8 编译器:

android.enableD8=true

https://r8.googlesource.com/r8

感兴趣的朋友不妨根据文档,研究一下 R8 的使用。

推荐阅读:

以上是关于D8,下一代 dex 编译器的主要内容,如果未能解决你的问题,请参考以下文章

D8和R8安卓的区别

颤振,Gradle 任务 assembleDebug 失败,退出代码为 1

Android 逆向整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmOptimizeDexFile() 方法分析 | /bin/dexopt 源码分析 )(代码片段

常见android app加固厂商脱壳方法研究

常见android app加固厂商脱壳方法研究

发布时编译时返回 dex 进程的代码 1