如何在Xcode中构建KMM iOSApp?解决“No such module 'shared’”错误
不用CocoaPods,通过SPM在Xcode构建KMM iOS项目的解决方法
明确结论:完全可以不用CocoaPods,仅通过Swift Package Manager(SPM)在Xcode中构建KMM的iOS应用,你遇到的No such module 'shared'错误,是因为Xcode未正确关联Kotlin Multiplatform生成的Shared框架产物。
以下是具体操作步骤:
1. 先生成Kotlin端的SPM框架产物
在Android Studio的终端中,执行编译命令生成SPM所需的框架文件:
./gradlew :shared:generateDummyFramework
若需完整编译对应架构的产物(比如适配Arm64模拟器),可执行:
./gradlew :shared:compileKotlinIosSimulatorArm64
注:x86架构模拟器替换为
compileKotlinIosX64,真机目标替换为compileKotlinIosArm64
2. 在Xcode中关联SPM依赖
- 打开iOS项目,点击菜单栏
File→Add Packages... - 选择
Add Local...,定位到KMM项目shared模块下的build/spm目录(第一步命令生成的目录) - 确认导入后,在Xcode项目设置的
Frameworks, Libraries, and Embedded Content列表中,确保shared框架已添加,且嵌入方式设为Embed & Sign
3. 验证并修复导入问题
在Swift代码中导入模块时确保拼写正确:
import shared
若仍报错,清理Xcode缓存后重试:
- 按
Cmd+Shift+K清理项目 - 按
Cmd+Option+Shift+K清理构建文件夹 - 重启Xcode后重新构建
常见排查点
- 检查
shared模块的build.gradle.kts配置,确保已启用SPM支持:plugins { kotlin("multiplatform") id("com.android.library") id("org.jetbrains.kotlin.native.cocoapods") } kotlin { ios { binaries.framework { baseName = "shared" isStatic = false // 按需设置静态/动态框架 } } // 其他平台配置... } - 确认Xcode构建目标架构与Kotlin编译的架构匹配(比如模拟器用Arm64,对应
iosSimulatorArm64编译任务)
内容的提问来源于stack exchange,提问作者tbt
相关产品推荐
相关产品推荐

