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

Xcode 15.2下Kotlin多平台项目链接命令失败(退出码1)求助

Xcode 15.2 下 KMM Swift Package 链接错误(未定义符号+架构不匹配)解决方案

问题核心

从错误日志能看出两个直接关联的问题:

  • 架构不匹配:模拟器构建时加载的是x86_64架构的movies.framework,但Xcode 15.2的arm64模拟器要求对应架构的二进制文件
  • 未定义符号:本质是framework中缺失需要的类符号,由架构不匹配直接导致

解决方案

1. 修正KMM框架的架构输出配置

修改build.gradle.kts中的iOS二进制配置,确保覆盖所有需要的架构,并正确生成framework:

listOf(
    iosX64(),
    iosArm64(),
    iosSimulatorArm64()
).forEach {
    it.binaries.framework {
        baseName = "movies"
        // 保持regular framework的动态特性(如果是静态框架则设为true)
        isStatic = false
    }
}

同时更新multiplatformSwiftPackage配置,明确指定支持的架构:

multiplatformSwiftPackage {
    swiftToolsVersion("5.3")
    targetPlatforms {
        iOS { v("13") }
    }
    // 新增:明确声明支持的架构
    supportedArchitectures {
        iosSimulatorArm64()
        iosX64()
        iosArm64()
    }
}

2. 调整Xcode 15.2的项目架构设置

打开iOS项目的Build Settings:

  • Architectures:设置为Standard Architectures (arm64, x86_64)
  • Excluded Architectures:Debug模式下取消排除arm64(Xcode 15.2默认可能对模拟器排除该架构)
  • Build Active Architecture Only:Debug设为YES,Release设为NO

3. 重新生成并发布Swift Package

执行以下命令清理并重新生成Swift Package:

./gradlew clean swiftPackage

上传新生成的Package到GitHub时,确保完整上传所有架构的framework产物,避免遗漏arm64模拟器版本。

4. 验证iOS项目的依赖引入

检查Package.swift中依赖配置是否正确,确保引用最新版本的Swift Package:

dependencies: [
    .package(url: "你的GitHub仓库地址", from: "0.0.1")
],
targets: [
    .target(
        name: "你的iOS项目Target名称",
        dependencies: [.product(name: "movies", package: "你的Swift Package名称")]
    )
]

在Xcode中执行File > Packages > Update to Latest Package Versions同步依赖。

5. 额外排查点

  • 确认KMM中暴露给iOS的类添加了@ObjC注解或继承NSObject,确保能被Swift识别:
    @ObjC
    class GetMoviesUseCase : NSObject {
        // 类实现
    }
    
  • 用nm命令检查framework是否包含目标符号:
    nm -gU /path/to/movies.framework/movies | grep MoviesGetMoviesUseCase
    
    若无输出,说明类未被编译进framework,需检查KMM代码的可见性或编译配置。

内容的提问来源于stack exchange,提问作者Akhil Balakrishnan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 20:01:21