在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 地址、功能开关等
这种方法可以高效管理多个渠道版本,便于测试和发布。