Flutter 2.2.3版本build apk时dart-define参数不生效问题排查
问题原因
你遇到的是Flutter 2.2.3版本的已知构建缺陷:当flutter build apk命令同时使用--split-per-abi和--dart-define参数时,自定义的环境变量不会被传递到分ABI的子构建任务中,最终Dart代码只能读取到defaultValue的默认值。
前置排查项
在执行解决方案前可先确认:命令中--dart-define后的变量名和Dart代码中String.fromEnvironment读取的变量名拼写、大小写完全一致,排除人为书写错误导致的读取失败。
解决方案
可根据实际情况选择以下任意一种方案解决:
- 升级Flutter到2.5.0及以上版本,该缺陷已在后续版本被官方修复
- 若暂时无法升级版本,构建时去掉
--split-per-abi参数,打通用APK,此时--dart-define的变量会正常生效 - 若必须拆分ABI且不能升级Flutter版本,可针对不同架构单独执行构建命令,示例如下:
# 构建arm32架构APK flutter build apk --obfuscate --split-debug-info=./build/info-apk --target-platform android-arm --dart-define=SOME_VAR=true # 构建arm64架构APK flutter build apk --obfuscate --split-debug-info=./build/info-apk --target-platform android-arm64 --dart-define=SOME_VAR=true # 构建x86_64架构APK flutter build apk --obfuscate --split-debug-info=./build/info-apk --target-platform android-x86_64 --dart-define=SOME_VAR=true
内容的提问来源于stack exchange,提问作者A.A
相关产品推荐
相关产品推荐

