我应该只需从我的 Gradle 文件中删除与 ProGuard 相关的行,并添加
android.enableR8 = true
行吗?谢谢。
android.enableR8 = true
行吗?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 Archive Library(AAR)项目。 它仅用于构建APK文件。
编辑#1
来自@Archie, 如果您正在使用Gradle插件版本 3.4.0 及以上,则默认启用 R8 。
请参见: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
android.enableR8 = true
吗?我在一个“旧”的空项目中遇到了这个问题(只是进行了一系列的Android开发者更新)。我无法确定在哪里启用该设置,所以我清除了该项目并创建了一个新项目,希望我可以将该信息作为注释添加,但在搜索新文件后,我发现没有该行的条目。 - CareluseProguard
将会被从 DSL 中弃用。如果有人想继续使用 ProGuard 而不是 R8,请在 gradle.properties 文件中设置 android.enableR8=false
。详情请见:https://issuetracker.google.com/issues/129758703 - Richard Chang