启用R8后是否仍需在build.gradle中配置混淆与压缩相关代码?
关于Android R8启用后的配置疑问解答
Great question! Let's break down these two key points clearly for you:
1. 启用R8后是否需要保留混淆相关代码?
Absolutely. R8是ProGuard的替代工具,但它完全兼容现有的ProGuard规则文件,所以你仍然需要在build.gradle中配置混淆规则(如果有自定义需求的话)。
比如你有自定义的规则文件proguard-rules.pro,那这段配置还是要保留:
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
R8会正确解析这些ProGuard风格的规则,不用你重新改写现有规则。如果没有自定义规则,Android提供的默认ProGuard规则在R8启用后也依然生效。
2. 能否省略minifyEnabled true和shrinkResources true?
Nope,这两行绝对不能省略,原因如下:
android.enableR8 = true只是告诉构建系统用R8替代ProGuard作为代码压缩/混淆的工具,但它本身不会主动触发压缩流程。minifyEnabled true才是真正开启代码压缩与混淆功能的开关(不管用ProGuard还是R8),如果省略这行,R8根本不会运行。shrinkResources true是控制是否移除未使用资源的独立配置,和R8配合生效,如果你需要资源压缩的话,也必须保留这行。
就算在R8默认启用的新版Android Gradle Plugin中,你依然需要minifyEnabled true来触发压缩混淆流程。
内容的提问来源于stack exchange,提问作者Jayakrishnan
相关产品推荐
相关产品推荐

