如何在Kotlin Multiplatform应用中正确集成Flutter模块
Kotlin Multiplatform 安卓端源码方式集成Flutter模块落地步骤
你遇到的两个典型集成误区:一是无需将Kotlin DSL格式的settings.gradle.kts重命名为Groovy格式的settings.gradle,二是宿主项目名参数配置位置、格式错误导致不生效,按以下步骤配置即可跑通全量一步编译:
1. 配置settings.gradle.kts引入Flutter子项目
直接在KMP项目根目录原有的settings.gradle.kts末尾追加如下配置,无需修改文件后缀:
// 请将路径替换为你本地Flutter模块的实际相对路径 setBinding(Binding(mapOf("gradle" to this))) evaluate( file( rootDir, "flutter_module/.android/include_flutter.groovy" ) )
如果你的Flutter模块存放在KMP项目同级目录,将路径替换为
settingsDir.parentFile, "flutter_module/.android/include_flutter.groovy"即可。配置完成后同步Gradle,会自动引入:flutter、:flutter_embedding_debug等相关子项目。
2. 配置宿主应用模块名参数
之前配置不生效的核心原因有两点:
- 参数放错位置:该配置需要写在**KMP宿主项目根目录的
gradle.properties**中,而非Flutter模块内部的gradle.properties - 参数值格式错误:不需要给值加引号,也不需要加冒号前缀
直接在根目录gradle.properties文件末尾追加一行:
org.gradle.project.flutter.hostAppProjectName=MusicTraining
3. 宿主应用模块添加Flutter依赖
找到你项目中MusicTraining应用模块的构建脚本(build.gradle.kts或build.gradle),在dependencies依赖块中添加Flutter模块依赖:
dependencies { // 保留原有所有依赖配置 implementation(project(":flutter")) }
4. 集成校验与常见问题处理
- 首次同步前先进入Flutter模块目录执行
flutter pub get,生成.android构建目录文件,避免Gradle同步时报找不到脚本的错误 - 若同步后仍报找不到宿主项目的错误,检查
MusicTraining模块是否正确应用了com.android.application插件,只有application类型的安卓模块会被识别为宿主App - 不要全局替换项目中的
:app字段,Flutter的构建逻辑会自动读取配置的宿主项目名完成关联,全局替换会破坏Flutter模块内部的构建链路 - 若出现Flutter编译版本和宿主安卓项目编译版本不匹配的问题,统一将两者的
compileSdkVersion对齐到34及以上即可
内容的提问来源于stack exchange,提问作者Adrien
相关产品推荐
相关产品推荐

