正因如此,我们投入大量精力,对 Dex 编译器做出了一些重要的改进。我们很兴奋地宣布:作为 Android Studio 3.0 测试版的一部分,下一代 Dex 编译器 D8 现已开放预览。
与当前 DX 编译器相比,D8 的编译速度更快,输出的 .dex 文件更小,同时却能保持相同乃至更出色的应用运行时性能。
* 采用此处的基准测试项目进行测试。 *采用此处的基准测试项目进行测试。
何不试一下?
D8 预览版将随 Android Studio 3.0 测试版一起开始提供。要试用此预览版,您可以在项目的 gradle.properties 文件中进行以下设置:
android.enableD8=true
我们在许多应用上测试了 D8 的正确性和性能,结果鼓舞人心。我们有足够的信心,相信我们改用 D8 作为构建 AOSP 的默认 Dex 编译器会取得成功。目前尚无已知问题,但我们希望收到您的反馈意见。您可以使用此链接提交错误报告。
后续计划
我们计划在未来几个月内随 Android Studio 3.0 版一起开放 D8 预览。在此期间,我们将重点解决我们从社区收到的任何关键错误报告。我们计划在 Android Studio 3.1 中结束 D8 预览并将其作为默认 Dex 编译器。届时,DX 编译器将正式进入维护模式。此后,将只修复 DX 的关键问题。
除 D8 之外,我们还在开发 R8,后者用于取代 Proguard 对整个程序进行精简和优化。尽管 R8 项目已经开放源代码,但目前尚未集成到 Android Gradle 插件中。不久之后,当我们准备面向社区开放 R8 预览时,我们将提供更多相关详情。
工具开发者:让您的字节码工具做好迎接 Java 8 的准备
4 月,我们宣布推出 Java 8 语言脱糖功能。目前,在 Java 编译 (javac) 之后,在运行任何字节码读取或重写工具之前,会立即执行脱糖步骤。未来两个月,脱糖步骤将会作为 D8 的一部分,移到整个管道后面一个阶段中。这样,我们将可以进一步缩短总体构建时间并生成更优化的代码。这一变更意味着任何字节码或重写工具将在脱糖步骤之前执行。如果您在开发用于 Android 的 .class 字节码读取或重写工具,您将需要确保它们能够处理 Java 8 字节码格式,以便在我们将脱糖步骤移入 D8 之后,它们仍可继续正确工作。
尽情体验 Dex 编译吧!