You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 10:35:22