Reg*_*_AG 24 obfuscation android proguard android-proguard r8
我想知道如何从ProGuard过渡到R8.
我应该从Gradle文件中删除与Proguard相关的行并android.enableR8 = true改为添加行吗?
谢谢.
shi*_*hen 32
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是打开的。
请参阅: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'
}
}
...
}
Run Code Online (Sandbox Code Playgroud)
在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
Run Code Online (Sandbox Code Playgroud)
3.生成混淆的应用程序。
./gradlew assembleRelease
Run Code Online (Sandbox Code Playgroud)
4.(可选)微调和故障排除
找到您<your-path>/full-r8-config.txt以微调配置或进行故障排除(如果有)。
参考文献:
https://developer.android.com/studio/build/shrink-code.html#configuration-files