- 编译更快、时间更短;
DEX
编译时占用内容更小;.dex
文件大小更小;D8
编译的.dex
文件拥有相同或者是更好的运行时性能;
根据 Google Android
团队使用 Dex
与 D8
编译器的测试对比数据:
1.2 R8 工具
Google
在 Android Studio 3.2
中引入 R8
作为 ProGuard
的替代工具,用于代码的压缩(shrinking
)和混淆(obfuscation
)。通过在 gradle.properties
中新增 android.enableR8 = true
开启 R8
工具。
Disables R8 for Android Library modules only.
android.enableR8.libraries = false
Disables R8 for all modules.
android.enableR8 = false
1.3 Android Studio 3.4 版本 D8 R8 变更
在 Android Studio 3.4
版本中,R8
把 desugaring
、shrinking
、obfuscating
、optimizing
和 dexing
都合并到一步进行执行。在 Android Studio 3.4
以前的版本编译流程如下:
合并之后编译流程如下:
注意,如果我们在 build.gradle
中配置了 useProguard = false
则不管是否开启 R8</