flutter如何实现多入口打包
在Flutter项目中,如何实现多入口打包?比如针对不同环境(开发、测试、生产)或不同客户定制化需求,需要打包出不同的APK或IPA文件。目前只知道通过–flavor配置,但具体如何定义多入口的main文件、资源配置以及打包命令该如何编写?希望能给出一个完整的实现方案,包括代码结构和gradle/android、xcode/ios的配置细节。
2 回复
在 Flutter 中,多入口打包可以通过配置不同的 Flavor 来实现,通常用于区分开发、测试和生产环境。以下是实现步骤:
1. 配置 Android 端
- 在
android/app/build.gradle中定义 flavor:
android {
flavorDimensions "default"
productFlavors {
dev {
dimension "default"
applicationIdSuffix ".dev"
}
prod {
dimension "default"
}
}
}
2. 配置 iOS 端
- 在 Xcode 中创建多个 Scheme(如 Dev、Prod),并为每个 Scheme 设置不同的
Bundle Identifier。
3. Dart 代码中读取配置
- 使用
--dart-define传递参数,在main.dart中解析:
import 'package:flutter/foundation.dart';
void main() {
String flavor = const String.fromEnvironment('FLAVOR', defaultValue: 'dev');
runApp(MyApp(flavor: flavor));
}
4. 打包命令
- 开发版:
flutter build apk --flavor dev --dart-define=FLAVOR=dev
flutter build ios --flavor dev --dart-define=FLAVOR=dev - 生产版:
flutter build apk --flavor prod --dart-define=FLAVOR=prod
flutter build ios --flavor prod --dart-define=FLAVOR=prod
注意事项
- iOS 需手动配置 Scheme 和 Bundle ID。
- 可结合不同配置文件(如 API 地址)动态加载资源。
通过以上步骤,即可实现多环境打包。


