已配置flavor的Flutter项目在Android原生运行时如何指定Flutter入口文件
Flutter 配置 flavor 后 Android 原生运行指定入口文件的方法
方法1:原生初始化 FlutterEngine 时绑定入口
- 如果你通过自定义
FlutterEngine启动 Flutter 页面,直接在执行 Dart 入口方法时指定对应入口文件路径即可,示例代码如下:
// Kotlin 实现 val flutterEngine = FlutterEngine(this) flutterEngine.dartExecutor.executeDartEntrypoint( DartExecutor.DartEntrypoint( FlutterLoader.getInstance().findAppBundlePath(), "lib/main_dev.dart", // 替换为你的 flavor 对应入口文件路径 "main" // 入口文件内的主函数名,默认是main,自定义函数名可同步修改 ) ) // 缓存 engine 后续可直接调用 FlutterEngineCache.getInstance().put("common_engine", flutterEngine)
// Java 实现 FlutterEngine flutterEngine = new FlutterEngine(this); flutterEngine.getDartExecutor().executeDartEntrypoint( new DartExecutor.DartEntrypoint( FlutterLoader.getInstance().findAppBundlePath(), "lib/main_prod.dart", "main" ) ); FlutterEngineCache.getInstance().put("common_engine", flutterEngine);
- 如果要和 flavor 自动绑定,可在 Android 构建配置中给不同 flavor 预设入口路径,避免手动切换:
// app 模块 build.gradle 配置 android { flavorDimensions "env" productFlavors { dev { dimension "env" buildConfigField "String", "FLUTTER_ENTRY", "\"lib/main_dev.dart\"" } prod { dimension "env" buildConfigField "String", "FLUTTER_ENTRY", "\"lib/main_prod.dart\"" } } }
配置后原生代码直接取 BuildConfig.FLUTTER_ENTRY 作为路径参数传入即可。
方法2:通过运行配置添加构建参数指定
如果是直接在 Android Studio 中选择对应 flavor 运行,可直接修改运行配置:
- 打开顶部菜单栏
Run→Edit Configurations - 找到当前 Android 项目的运行配置,在
Build分类下的Additional arguments栏添加参数:-Pdart-entrypoint=lib/main_dev.dart
替换路径为对应 flavor 的入口文件路径后保存即可。
注意:所有自定义的 Flutter 入口函数必须添加
@pragma('vm:entry-point')注解,否则 release 打包时会被 Dart 编译器树摇优化掉,导致运行崩溃。
内容的提问来源于stack exchange,提问作者user17495903
相关产品推荐
相关产品推荐

