flutter如何实现多环境版本并行

在Flutter项目中,我需要同时维护开发、测试、生产三个环境的版本,但每次切换环境都要重新打包很麻烦。有没有办法像Android那样通过Build Variants实现多环境并行?希望能直接安装不同环境的APK且互不覆盖,比如通过修改包名或区分渠道实现。最好能支持动态切换环境而不需要重新编译,有没有成熟的方案或插件推荐?

2 回复

Flutter可通过Flavor实现多环境并行。在android/app/build.gradle和iOS的Scheme中配置不同环境变量,使用--dart-define传递参数,代码中通过String.fromEnvironment读取配置,实现不同环境打包和运行。

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


在Flutter中实现多环境版本并行,可以通过以下几种方式:

1. 使用Flavor配置

步骤:

  1. android/app/build.gradle 中配置flavor:
android {
    flavorDimensions "environment"
    productFlavors {
        dev {
            dimension "environment"
            applicationIdSuffix ".dev"
        }
        prod {
            dimension "environment"
            applicationIdSuffix ".prod"
        }
    }
}
  1. ios/Runner.xcworkspace 中配置scheme,创建dev和prod配置

  2. 创建环境配置文件:

// lib/config/environment.dart
class Environment {
  static const String dev = 'dev';
  static const String prod = 'prod';
  
  static String current = dev;
  
  static Map<String, dynamic> config = {
    dev: {
      'apiUrl': 'https://dev.api.com',
      'appName': 'MyApp Dev',
    },
    prod: {
      'apiUrl': 'https://api.com', 
      'appName': 'MyApp',
    },
  };
}

2. 使用不同的构建命令

# 开发环境
flutter run --flavor dev

# 生产环境  
flutter build apk --flavor prod
flutter build ios --flavor prod

3. 使用环境变量

在启动时通过 --dart-define 传递环境变量:

flutter run --dart-define=APP_ENV=dev

在代码中读取:

const appEnv = String.fromEnvironment('APP_ENV', defaultValue: 'dev');

4. 使用配置文件

创建不同的配置文件:

  • config/dev.json
  • config/prod.json

在应用启动时加载对应配置。

优势:

  • 可同时安装不同环境的应用
  • 配置隔离,避免环境混淆
  • 便于测试和调试

推荐使用Flavor方式,这是最标准且功能最完整的解决方案。

回到顶部