Android / java:从ProGuard过渡到R8?

时间:2018-10-15 13:57:25

标签: android proguard obfuscation android-proguard r8

我想知道如何从 ProGuard 过渡到 R8

我应该从Gradle文件中删除与Proguard相关的行,而是添加android.enableR8 = true行吗?

谢谢。

1 个答案:

答案 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上,默认情况下,useProguardfalse。并且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