我想知道如何从 ProGuard 过渡到 R8 。
我应该从Gradle文件中删除与Proguard相关的行,而是添加android.enableR8 = true
行吗?
谢谢。
答案 0 :(得分:11)
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