Proguard 由 GuardSquare 开发和维护,而 R8 由 Android 团队开发和维护,这意味着它们是两个不同的产品,尽管 R8 与 Proguard 兼容。
从这里看到https://www.guardsquare.com/en/blog/proguard-and-r8
ProGuard 和 R8 的兼容性
对开发者来说,好消息是
R8 向后兼容 ProGuard。如果你有工作
ProGuard 配置(可能从 Stackoverflow 不拘一格地复制),
你可以把它带到R8。它目前仍然忽略一些
选项。值得注意的是,R8 没有实现选项 -whyareyoukeeping
和 -addconfigurationdebugging,我们认为这对快速至关重要
正如我们在之前的博客中所解释的那样,得到一个有效的配置。
是的,android.enableR8 = true 将启用 R8 功能。
另外请注意,R8 目前(截至 Android Studio 3.2.1 时)不支持 Android 存档库 (AAR) 项目。仅在构建 APK 文件时使用。
编辑#1
来自@Archie,
如果您使用的是 Gradle 插件版本 3.4.0 及更高版本,R8 默认为 on。
见:https://developer.android.com/studio/releases#r8-default
编辑#2
对于从 Proguard 到 R8 的转换,您可以按照以下步骤操作:
1.禁用 Proguard
更新 buildTypes { } 配置以禁用 Proguard,例如对于release 构建类型:
android {
...
buildTypes {
release {
useProguard false // <-- disable proguard
minifyEnabled true // <-- enable minification
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
...
}
在 Android Studio 3.4 上,useProguard 默认为 false。 R8默认开启。
2。 (可选)设置完整的 R8 配置报告文件
在您的proguard-rules.pro 中添加以下行,以输出 R8 在构建项目时应用的所有规则的完整报告。
// You can specify any path and filename.
-printconfiguration <your-path>/full-r8-config.txt
3.生成混淆应用。
./gradlew assembleRelease
4. (可选)微调和故障排除
找到您的 <your-path>/full-r8-config.txt 以微调配置或进行故障排除(如果有)。
参考资料:
https://developer.android.com/studio/build/shrink-code.html#configuration-files