如何完全禁用Proguard?设置isMinifyEnabled=false无效的问题求助
如何完全禁用Proguard?设置isMinifyEnabled=false无效的问题求助
Hey,我太懂你现在的困扰了——在AGP 7+版本里,单纯设置isMinifyEnabled = false好像真的没法彻底关掉混淆相关的工具,毕竟现在默认用的是R8而不是传统的ProGuard了,咱们一步步来解决这个问题:
- 首先完善你的buildTypes配置,除了
isMinifyEnabled = false,一定要加上isShrinkResources = false。因为资源收缩功能有时候会和混淆工具绑定,哪怕你关了混淆,资源收缩可能还会触发相关逻辑。另外确保所有proguardFiles相关配置都被注释或删除,你的现有代码这部分已经做了,完整的release配置可以参考这样:
buildTypes { getByName("release") { isMinifyEnabled = false isShrinkResources = false isCrunchPngs = false // 确保所有proguardFiles相关配置都被注释或删除 signingConfig = signingConfigs.getByName("release") } }
- 接下来处理gradle.properties的设置,AGP 7+里
useProguard = false确实已经被弃用了,要彻底禁用R8(它是AGP默认的混淆/优化工具),你需要在项目根目录的gradle.properties文件里添加这两行配置:
android.enableR8=false android.enableR8.libraries=false
这两个配置分别关闭应用代码的R8优化和依赖库的R8优化,能确保完全切断相关的混淆流程。
- 最后可以检查下模块依赖,如果某个依赖库自动引入了ProGuard/R8规则,可能会干扰你的设置。你可以在有问题的依赖项后面加上
{ exclude group: 'com.android.tools', module: 'r8' }来排除相关依赖,不过一般来说前面两步就足够解决问题了。
要是你还是不确定有没有彻底关掉,可以生成release包后用反编译工具(比如jadx)看看代码,类名、方法名要是还和你写的一致,就说明混淆已经完全禁用啦。
备注:内容来源于stack exchange,提问作者Rohit Kushvaha
相关产品推荐
相关产品推荐

