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配置
步骤:
- 在 
android/app/build.gradle中配置flavor: 
android {
    flavorDimensions "environment"
    productFlavors {
        dev {
            dimension "environment"
            applicationIdSuffix ".dev"
        }
        prod {
            dimension "environment"
            applicationIdSuffix ".prod"
        }
    }
}
- 
在
ios/Runner.xcworkspace中配置scheme,创建dev和prod配置 - 
创建环境配置文件:
 
// 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.jsonconfig/prod.json
在应用启动时加载对应配置。
优势:
- 可同时安装不同环境的应用
 - 配置隔离,避免环境混淆
 - 便于测试和调试
 
推荐使用Flavor方式,这是最标准且功能最完整的解决方案。
        
      
            
            
            
