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

构建含SocketIO依赖的XCFramework后SPM引入崩溃问题求助

解决XCFramework+SPM依赖SocketIO启动崩溃问题

1. 排查XCFramework打包时的依赖嵌入

  • 打包XCFramework前,确认你的框架目标的Embed & Sign设置里,SocketIO.framework是设为Embed & Sign,不是Do Not Embed。选后者的话,打包后的XCFramework不会包含SocketIO,用户安装后自然找不到这个库。
  • 更推荐的做法是:不要在XCFramework里嵌入SocketIO,而是交给SPM来管理依赖,避免后续的重复链接或路径问题。

2. 修正SPM的Package.swift配置

  • 你的Package.swift必须明确声明对SocketIO的依赖,这样SPM会自动帮用户拉取并链接SocketIO,不用靠你的XCFramework嵌入。示例配置如下:
let package = Package(
    name: "YourFrameworkName",
    platforms: [.iOS(.v13)],
    products: [
        .library(name: "YourFrameworkName", targets: ["YourFrameworkName"]),
    ],
    dependencies: [
        // 替换为SocketIO的官方SPM地址和适配的版本号
        .package(url: "https://github.com/socketio/socket.io-client-swift.git", from: "16.0.0")
    ],
    targets: [
        .target(
            name: "YourFrameworkName",
            dependencies: [
                // 让你的框架直接依赖SocketIO的产品
                .product(name: "SocketIO", package: "socket.io-client-swift")
            ]),
        .testTarget(
            name: "YourFrameworkNameTests",
            dependencies: ["YourFrameworkName"]),
    ]
)

3. 验证用户侧的构建配置

  • 让用户检查自己项目的Frameworks, Libraries, and Embedded Content里,你的SPM包和SocketIO是否都被正确添加,且SocketIO的嵌入方式是Embed & Sign。
  • 确认用户项目的Runpath Search Paths包含@executable_path/Frameworks和@loader_path/Frameworks——这是dyld查找rpath库的默认必要路径。

4. 重新发布修正后的SPM包

  • 如果是Package.swift配置错了,改完后发布新版本,让用户更新到最新版即可。
  • 如果是XCFramework打包时嵌入依赖的问题,重新打包不含SocketIO的XCFramework(靠SPM管理依赖),再上传发布。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:06:18