flutter多环境配置、构建


本文主要针对纯flutter项目的多环境配置,如果是基于原生项目的多环境需求,可以参考使用 Channelflutter项目初始化的时候向原生代码获取项目的环境信息。
主要有两种方式:换启动文件、使用–dart-define

基于换入口文件方式

我们可以指定不同的启动文件,并在相应的main函数中,指定环境变量。

  1. 新建各环境的启动文件main_dev.dartmain_pro.dart
/// lib/main_dev.dart
void main() {
  // 设置开发环境
  Config.env = Env.DEV;

  runApp(MyApp());
}

/// lib/main_pro.dart
void main() {
  // 设置生产环境
  Config.env = Env.PRO;

  runApp(MyApp());
}
  1. 配置类
enum Env {
  PRO,
  DEV,
}
/// 环境配置类
class Config {
  static Env? env;

  static String get apiHost {
    switch (env) {
      case Env.PRO:
        return "http://pro.com";
      case Env.DEV:
        return "http://develop.com";
      default:
        return "default";
    }
  }
}
  1. 运行
  • 命令行

flutter run -t lib/main_pro.dart

  • AS
    更改Edit Configuration
    在这里插入图片描述

  • VSCode
    新建.vscode/launch.json, 之后在Run and Debug窗口,选择相关配置项运行

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "",
            "request": "launch",
            "type": "dart",
            "args": [
                "-t lib/main_pro.dart",                
            ]
        }
    ]
}
  1. 打包
  • android

flutter build apk -t lib/main_pro.dart
如果打生产包的话,还需要先配置证书

  • ios

第一步:
flutter build ios -t lib/main_pro.dart
第二步:
用XCode打开iOS项目,配置完相关证书,然后打包Product - Archive,选择Distrubiion,打包完毕后,可以通过Window - Devices and Simulta

基于–dart-define实现

用多文件虽然能解决问题,但实现起来不够优雅,Flutter 1.17开始支持使用–dart-define,以键值对的形式传入编译参数

  1. main函数中获取参数
/// lib/mian.dart
void main() {
  const env = String.fromEnvironment("APP_ENV", defaultValue: "DEV");
  Config.env = Config.ConfigFromString(env);
  runApp(MyApp());
}
  1. 运行

flutter run --dart-define=APP_ENV=PRO

也可以传入多个值,将应用名称、版本号直接通过命令行参数,传入方便Jenkins CI

flutter run --dart-define=APP_NAME=test --dart-define=VERSION_CODE=111

  • AS
    同上,更改Edit Configuration
  1. 打包
  • android

先配置证书,然后
flutter build apk --dart-define=APP_ENV=PRO

  • iOS

flutter build ios --dart-define=APP_ENV=PRO
然后同上第二步,打开XCodeArchive

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值