返回

D8 dexer:拥抱更快的Android应用编译

Android

在 Android 开发社区,我们总是热衷于追求更快速、更智能的应用编译方式。基于这一目标,我们此前发布了 D8,作为下一代 dex 编译器。与之前的编译器 DX 相比,D8 拥有更快的运行速度,并且在生成同等或更好运行时性能的 .dex 文件的同时,文件体积更小。而在近期,我们宣布 D8 已成为 Android Studio 4.0 的默认 dex 编译器。

欢迎来到 Android 应用编译的新时代,在本文中,我们将详细解析 D8 dexer,它作为下一代 dex 编译器,已经成为 Android Studio 4.0 的默认编译器。

是什么推动了我们选择 D8?

我们不断追求更快速、更智能的应用程序编译,这并不是什么新鲜事。为了实现这一目标,我们致力于寻找一种可以替代现有的 dex 编译器 DX 的解决方案。D8 的出现就是顺应这一目标而生的,它能够以更快的速度运行,生成更小的 .dex 文件,同时还能提供同等甚至更好的运行时性能。

D8 的优势有哪些?

  • 速度更快 :与 DX 相比,D8 在编译速度上有着显著的提升。据测试,在使用 Android Studio 4.0 时,使用 D8 可以将编译时间缩短 25% 到 50%。
  • 更小的 .dex 文件 :D8 生成的 .dex 文件体积更小,这对于具有大量代码的应用程序尤其重要。在某些情况下,D8 可以将 .dex 文件的体积减少多达 20%。
  • 同等或更好的运行时性能 :D8 生成的 .dex 文件具有同等甚至更好的运行时性能。在大多数情况下,使用 D8 编译的应用程序性能不会受到任何影响,甚至可能会有所提升。

如何将项目迁移到 D8?

从 DX 切换到 D8 非常简单。您只需要按照以下步骤操作即可:

  1. 确保您正在使用 Android Studio 4.0 或更高版本。
  2. 在项目中,选择 File > Project Structure。
  3. 在 Project Structure 对话框中,选择 Modules。
  4. 选择您的应用程序模块,然后单击 Dependencies 选项卡。
  5. 在库依赖项下,单击添加库依赖项按钮。
  6. 在添加库依赖项对话框中,选择 Android 6.0 (API 23) 或更高版本。
  7. 单击确定按钮。
  8. 在 build.gradle 文件中,将 dexOptions.preDexLibraries 的值设置为 true。
  9. 重新构建您的项目。

迁移到 D8 之后,您应该会注意到编译速度和 .dex 文件大小的显着改善。

D8 的局限性

与 DX 相比,D8 有一些局限性需要考虑:

  • D8 仅适用于 Java 8 及更高版本的项目。
  • D8 不支持 proguard 混淆。
  • D8 不支持 dexguard 混淆。

如果您正在使用 Java 7 或更低版本的项目,或者您需要使用 proguard 或 dexguard 混淆,那么您将无法使用 D8。

结论

D8 是下一代 dex 编译器,它具有更快的速度、更小的 .dex 文件以及同等或更好的运行时性能。如果您正在使用 Android Studio 4.0 或更高版本,我们强烈建议您将项目迁移到 D8。