flutter如何实现多环境打包

在Flutter项目中,如何配置多环境(如开发、测试、生产)的打包方案?目前需要为不同环境设置不同的API地址和配置参数,但不知道如何通过flutter命令或配置文件实现自动化打包。求教具体实现方式,比如如何通过–dart-define或不同的flavor来区分环境?最好能提供完整的配置示例和打包命令。

2 回复

Flutter多环境打包可通过配置不同build flavor实现。步骤如下:

  1. android/app/build.gradle中定义flavorDimensionsproductFlavors
  2. ios/Podfile和Xcode中配置scheme
  3. 使用--flavor参数打包,例如:
    flutter build apk --flavor dev
    flutter build ios --flavor prod
    

更多关于flutter如何实现多环境打包的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中实现多环境打包,可以通过配置不同环境变量和构建配置来实现。以下是具体步骤:

1. 配置环境变量

在项目根目录创建不同环境的配置文件,例如:

  • config/dev.env(开发环境)
  • config/prod.env(生产环境)

每个文件定义环境变量,例如:

// dev.env
BASE_URL=https://dev.api.com
APP_NAME=MyApp_Dev

// prod.env
BASE_URL=https://api.com
APP_NAME=MyApp

2. 使用 flutter_dotenv 包加载配置

pubspec.yaml 中添加依赖:

dependencies:
  flutter_dotenv: ^5.0.2

main.dart 中根据构建类型加载对应环境文件:

import 'package:flutter_dotenv/flutter_dotenv.dart';

Future<void> main() async {
  const env = String.fromEnvironment('ENV', defaultValue: 'dev');
  await dotenv.load(fileName: 'config/${env}.env');
  runApp(MyApp());
}

3. 配置构建脚本

android/app/build.gradle 中配置构建类型:

android {
    flavorDimensions "environment"
    productFlavors {
        dev {
            dimension "environment"
            applicationIdSuffix ".dev"
        }
        prod {
            dimension "environment"
        }
    }
}

ios/Runner.xcworkspace 中通过 Scheme 配置环境(需手动设置)。

4. 使用 --dart-define 传递环境参数

通过命令行打包时指定环境:

# 开发环境
flutter build apk --dart-define=ENV=dev

# 生产环境
flutter build apk --dart-define=ENV=prod

5. 在代码中读取环境变量

String baseUrl = dotenv.get('BASE_URL');
String appName = dotenv.get('APP_NAME');

总结

通过以上步骤,可以灵活切换不同环境配置,实现多环境打包。建议将常用打包命令写入 package.json 或脚本文件简化操作。

回到顶部