如何在Flutter中借助Android Studio/Xcode构建多环境应用
多环境Flutter应用配置:关联Flutter代码与原生构建类型
问题背景
需要让Flutter应用适配两个后端环境:
- DEV环境:后端地址
https://dev.com - PRO环境:后端地址
https://pro.com
已在Android Studio配置了 dev/pro 两种构建类型,但不清楚如何将Flutter代码配置与原生构建类型关联,以下是具体实现步骤:
步骤1:Flutter端定义环境配置类
创建全局配置类,根据构建时传入的参数自动返回对应环境的配置:
class EnvConfig { final String baseUrl; EnvConfig._({required this.baseUrl}); // 根据构建参数返回当前环境配置 static EnvConfig get current { const isDev = bool.fromEnvironment('IS_DEV', defaultValue: false); return isDev ? EnvConfig._(baseUrl: 'https://dev.com') : EnvConfig._(baseUrl: 'https://pro.com'); } }
步骤2:关联Android构建类型与Flutter参数
修改Android项目 app/build.gradle 文件,在已配置的buildTypes中添加dart-define参数,绑定原生构建类型与Flutter环境变量:
buildTypes { release { signingConfig signingConfigs.release } dev { initWith release applicationIdSuffix ".dev" // 传递DEV环境标识给Flutter resValue "string", "flutter_defines", "--dart-define=IS_DEV=true" } pro { initWith release // 传递PRO环境标识给Flutter resValue "string", "flutter_defines", "--dart-define=IS_DEV=false" } }
配置完成后,在Android Studio的Build Variants中选择dev或pro变体运行/打包时,Flutter会自动获取对应环境参数。
步骤3:iOS端配置(Xcode)
3.1 创建对应Build Configuration
- 打开Xcode,选中项目根目录 → 切换到Info标签 → Configurations区域
- 点击
+号,选择Duplicate "Release" Configuration,分别创建Dev和Pro两种配置 - 可在Build Settings中为
Dev配置设置Bundle Identifier后缀(如.dev),实现同设备同时安装DEV/PRO包
3.2 绑定Flutter环境参数
- 在Xcode中选中项目根目录 → 切换到Build Settings标签 → 点击
+号选择Add User-Defined Setting - 创建名为
FLUTTER_DEFINE的变量,分别为Dev和Pro配置设置值:- Dev配置:
IS_DEV=true - Pro配置:
IS_DEV=false
- Dev配置:
- 或者通过Scheme配置:编辑Scheme → 选择Run/Archive → Arguments → 在Additional arguments to pass to Dart中添加:
- Dev:
--dart-define=IS_DEV=true - Pro:
--dart-define=IS_DEV=false
- Dev:
步骤4:在Flutter代码中使用环境配置
在网络请求或其他需要后端地址的场景,直接调用全局配置类:
import 'package:dio/dio.dart'; // 初始化网络请求实例 final dio = Dio(BaseOptions( baseUrl: EnvConfig.current.baseUrl, ));
步骤5:构建打包
- Android:在Android Studio的Build Variants中选中目标变体,执行Build → Generate Signed Bundle/APK完成打包
- iOS:在Xcode的Scheme下拉框中选中目标配置,执行Product → Archive完成打包
内容的提问来源于stack exchange,提问作者Thái Quốc Toản
相关产品推荐
相关产品推荐

