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

自定义Framework集成RxCocoa打包xcframework后缺失RxCocoaRuntime模块求助

解决自定义Framework打包.xcframework后「Missing Required Module 'RxCocoaRuntime'」错误

问题描述

自定义Framework(km-ios-sdk)中使用RxCocoa,通过SPM注入依赖并打包为.xcframework后,无论是SPM导入、手动下载导入还是CocoaPods引入,均触发「Missing Required Module 'RxCocoaRuntime'」错误。开发环境为Apple Silicon(M1 PRO)、macOS Ventura 13.1、Xcode 14.2(14C18),打包流程已包含设置动态库、BUILD_LIBRARY_FOR_DISTRIBUTION=YES等步骤。

核心原因

RxCocoa内部依赖RxCocoaRuntime模块,但打包.xcframework时未正确关联该依赖,或Framework的模块映射未声明对它的依赖关系。

解决步骤

1. 确认Framework的依赖配置

在km-ios-sdk项目中:

  • 进入Build Phases → Link Binary With Libraries,确认同时包含RxSwift和RxCocoa(SPM引入时会自动关联,手动检查避免遗漏)
  • 进入Build Settings,搜索Other Linker Flags,添加-ObjC(确保类别和静态库符号被正确链接)

2. 修改打包命令,完善依赖嵌入逻辑

更新archive命令,添加EMBEDDED_CONTENT_CONTAINS_SWIFT=YES确保Swift依赖被正确处理:

xcodebuild archive \
-scheme km-ios-sdk \
-archivePath ./archive/km-ios-sdk.framework-iphoneos.xcarchive \
-sdk iphoneos \
SKIP_INSTALL=NO \
BUILD_LIBRARY_FOR_DISTRIBUTION=YES \
EMBEDDED_CONTENT_CONTAINS_SWIFT=YES

xcodebuild archive \
-scheme km-ios-sdk \
-archivePath ./archive/km-ios-sdk.framework-iphonesimulator-arm64.xcarchive \
-sdk iphonesimulator \
SKIP_INSTALL=NO \
BUILD_LIBRARY_FOR_DISTRIBUTION=YES \
EMBEDDED_CONTENT_CONTAINS_SWIFT=YES

3. 检查并修正Module.modulemap

如果项目使用自定义Module.modulemap,需添加对RxCocoaRuntime的依赖声明:

framework module km_ios_sdk {
    umbrella header "km_ios_sdk.h"

    export *
    module * { export * }

    // 新增RxCocoaRuntime依赖声明
    explicit module RxCocoaRuntime {
        header "/path/to/RxCocoaRuntime.h"
        link "RxCocoaRuntime"
    }
}

若为Xcode自动生成的modulemap,可跳过此步骤,但需确保未手动修改导致依赖丢失。

4. 调整Package.swift的依赖管理

在Package.swift中显式声明RxSwift系列依赖,让SPM自动处理传递依赖(不建议在xcframework中嵌入第三方库,避免冲突):

let package = Package(
    name: "km-ios-sdk",
    products: [
        .library(
            name: "km-ios-sdk",
            targets: ["km-ios-sdk"]),
    ],
    dependencies: [
        .package(url: "https://github.com/ReactiveX/RxSwift.git", from: "6.5.0")
    ],
    targets: [
        .target(
            name: "km-ios-sdk",
            dependencies: [
                .product(name: "RxSwift", package: "RxSwift"),
                .product(name: "RxCocoa", package: "RxSwift")
            ],
            path: "./KmSDK.xcframework"
        )
    ]
)

5. 验证xcframework内容

解压生成的KmSDK.xcframework,检查各平台framework目录:

  • 若选择嵌入依赖,确认包含RxCocoaRuntime.framework
  • 检查模块映射文件是否正确关联依赖

6. 清理缓存后重试

  • 删除Xcode DerivedData:rm -rf ~/Library/Developer/Xcode/DerivedData
  • 删除旧的archive目录,重新执行打包命令
  • 在示例App中移除现有依赖,重新通过SPM/CocoaPods安装

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 08:56:07