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

Xcode中Swift静态库二进制分发与集成No such module问题咨询

Swift 闭源 BLE 库分发方案(等效 C 的 .a+.h 模式)

针对内部使用、不上架App Store的场景,你可以采用苹果官方推荐的静态XCFramework作为闭源分发格式,无需暴露源码,对方集成和调用成本和C的.a+.h一致。
打包操作步骤如下:

  • 打开你的库Xcode项目,进入库目标的「构建设置」页面,配置以下参数:
    • Mach-O Type 设置为 Static Library
    • Build Libraries for Distribution 设置为 YES(必选,用于生成Swift对外接口文件,替代C的.h头文件作用)
    • Skip Install 设置为 NO
  • 分别编译真机、模拟器两个架构的构建产物:
    1. 选中「真机设备」,按Command + B完成编译
    2. 选中「任意模拟器」,按Command + B完成编译
  • 执行命令打包多架构合一的XCFramework:
    xcodebuild -create-xcframework -framework 真机编译输出的framework路径 -framework 模拟器编译输出的framework路径 -output kingpin_mobile_framework.xcframework
    
  • 最终你只需把生成的kingpin_mobile_framework.xcframework文件发给顾问,对方将该文件拖入自己的项目,在「General」->「Frameworks, Libraries, and Embedded Content」中把该XCFramework的嵌入选项设为Do Not Embed,即可直接import调用,全程无法访问你的源码。
"No such module" 错误排查方案

你当前拖拽子项目编译后无法导入模块,按以下步骤逐一排查:

  • 确认库目标的Build Libraries for Distribution确实已经设置为YES,该开关未开启不会生成Swift模块接口,外部项目无法识别模块。
  • 检查应用项目的构建设置中的Framework Search Paths配置,确认已经自动添加了子项目编译输出framework的所在路径,若未添加请手动补全,同时勾选recursive选项。
  • 确认库中所有需要对外暴露的类、方法、属性都添加了public/open访问控制修饰符,Swift默认访问权限为internal,未显式声明公开的内容外部无法调用。
  • 清理Xcode缓存:按Command + Shift + K清理构建产物,删除~/Library/Developer/Xcode/DerivedData下对应项目的缓存文件夹后重新编译。
  • 检查子项目的scheme是否勾选了Shared,私有scheme不会被父项目识别,编译时不会优先构建库产物,导致模块找不到。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:06:04