在Flutter中打多渠道包(为不同应用市场或环境构建不同版本)主要有以下几种方法:
1. 使用 flutter_flavorizr 插件(推荐)
安装配置
dev_dependencies:
  flutter_flavorizr: ^5.0.0
配置 flavors
在 pubspec.yaml 中添加:
flavorizr:
  flavors:
    dev:
      app:
        name: "My App Dev"
      android:
        applicationId: "com.example.dev"
      ios:
        bundleId: "com.example.dev"
    prod:
      app:
        name: "My App"
      android:
        applicationId: "com.example.prod"
      ios:
        bundleId: "com.example.prod"
运行命令生成配置:
flutter pub run flutter_flavorizr
构建命令
# Android
flutter build apk --flavor dev
flutter build appbundle --flavor prod
# iOS
flutter build ipa --flavor prod
2. 手动配置 flavors
Android 配置
在 android/app/build.gradle 中:
android {
    flavorDimensions "default"
    productFlavors {
        dev {
            dimension "default"
            applicationId "com.example.dev"
            resValue "string", "app_name", "My App Dev"
        }
        prod {
            dimension "default"
            applicationId "com.example.prod"
            resValue "string", "app_name", "My App"
        }
    }
}
iOS 配置
在 Xcode 中:
- 复制现有的 Scheme
 
- 为每个渠道创建不同的 Build Configuration
 
- 设置不同的 Bundle Identifier
 
3. 代码中区分渠道
import 'package:package_info_plus/package_info_plus.dart';
class FlavorConfig {
  static String get flavor {
    const flavor = String.fromEnvironment('FLAVOR');
    return flavor;
  }
  
  static bool get isDev => flavor == 'dev';
  static bool get isProd => flavor == 'prod';
}
4. 使用不同配置
void main() {
  if (FlavorConfig.isDev) {
    // 开发环境配置
  } else {
    // 生产环境配置
  }
  runApp(MyApp());
}
主要步骤总结:
- 配置不同渠道的应用ID和名称
 
- 使用 
--flavor 参数构建对应渠道包 
- 在代码中通过环境变量区分不同渠道
 
- 为不同渠道配置不同的 API 地址、功能开关等
 
这种方法可以高效管理多个渠道版本,便于测试和发布。