You need to enable JavaScript to run this app. 开启ProGuard后flutter_config在Flutter侧无法读取.env返回null
优惠活动
大模型
产品
解决方案
定价
更多

开启ProGuard后flutter_config在Flutter侧无法读取.env返回null

问题根源

开启minifyEnabled true后,ProGuard的代码优化、混淆逻辑会直接破坏两处核心逻辑:

  1. flutter_config的原生插件类、MethodChannel处理方法被重命名或移除,Flutter侧发起的取值请求无法被原生端接收处理
  2. dotenv.gradle注入到BuildConfig中的.env对应静态字段,因被ProGuard判定为无直接引用,被优化删除
解决方案

1. 配置ProGuard保留规则

打开android/app/proguard-rules.pro,添加以下规则:

# 保留所有Flutter插件实现类,避免跨端调用方法被混淆
-keep class * extends io.flutter.plugin.common.FlutterPlugin { *; }
-keepclassmembers class * extends io.flutter.plugin.common.FlutterPlugin {
    public *;
}
# 保留项目BuildConfig中所有静态字段(含.env注入的配置项)
-keep class <你的应用ID>.BuildConfig { *; }
-keepclassmembers class <你的应用ID>.BuildConfig {
    public static <fields>;
}
# 防止MethodChannel基础类被混淆,保障跨端调用链路正常
-keep class io.flutter.plugin.common.** { *; }

注:替换<你的应用ID>时,直接复制build.gradle中defaultConfig块下的applicationId值即可。

2. 移除debug构建的不必要混淆配置

当前配置给debug构建也开启了minifyEnabled true和useProguard,会拖慢编译速度、导致调试断点失效,还会在开发阶段就出现配置读取异常。修改buildTypes下的debug配置:

debug {
    signingConfig signingConfigs.debug
    // 关闭debug构建混淆,仅release包开启混淆即可
    useProguard false
    minifyEnabled false
}

3. 额外优化(仅规则生效后仍有异常时添加)

如果按上述配置后仍无法读取,可在proguard-rules.pro中添加规则,关闭对BuildConfig类的优化逻辑:

-optimizations !class/unboxing/enum

内容的提问来源于stack exchange,提问作者Definitely Not Ayo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.04 00:15:05