Flutter 1.12+如何禁用ProGuard?解决--proguard参数未知错误
解决Flutter 1.12+启用ProGuard后运行错误及禁用混淆的问题
我之前也踩过这个坑,Flutter 1.12版本之后ProGuard默认启用,老的禁用方法和命令参数都失效了,给你几个实用的解决方向:
方法一:通过Gradle配置永久禁用混淆和压缩
虽然Flutter默认开启了ProGuard,但你可以直接在Android项目的gradle配置里手动覆盖这个设置:
- 打开你的Flutter项目,找到
android/app/build.gradle文件 - 定位到
buildTypes下的release代码块,修改参数如下:
buildTypes { release { // 关闭代码混淆 minifyEnabled false // 关闭资源压缩 shrinkResources false // 如果原来有proguardFiles的配置,注释或删除掉 // proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } }
保存后重新打包,ProGuard就会被完全禁用了。
方法二:临时禁用混淆打包(用命令参数)
你之前尝试的--proguard参数确实已经被废弃了,Flutter 1.12之后用--shrink参数来控制混淆和资源压缩(默认开启),对应的禁用参数是--no-shrink:
- 打App Bundle的命令:
flutter build appbundle --no-shrink
- 打APK的命令:
flutter build apk --no-shrink
额外建议:修复ProGuard规则而非直接禁用
如果只是因为ProGuard规则缺失导致运行错误,其实更推荐你完善混淆规则,这样既能保留代码混淆的安全性,又能解决问题:
- 打开
android/app/proguard-rules.pro文件 - 添加Flutter基础混淆规则(如果没有的话):
# Flutter核心组件规则 -keep class io.flutter.app.** { *; } -keep class io.flutter.plugin.** { *; } -keep class io.flutter.util.** { *; } -keep class io.flutter.view.** { *; } -keep class io.flutter.** { *; } -keep class io.flutter.plugins.** { *; }
- 针对你使用的第三方依赖,去官方文档查找对应的ProGuard规则并添加进去
内容的提问来源于stack exchange,提问作者Jeff S.
相关产品推荐
相关产品推荐

