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

如何创建包含SPM依赖的二进制XCFramework?

能否生成包含SPM依赖的二进制XCFramework?

可以生成包含SPM依赖的二进制XCFramework,但需要调整编译配置和归档流程来解决你遇到的依赖缺失问题。

核心问题分析

你遇到的矛盾点本质是:

  • BUILD_LIBRARY_FOR_DISTRIBUTION=YES是苹果官方要求的可分发二进制框架必备配置,否则生成的框架无法在其他项目中正常复用
  • 依赖找不到的问题,是因为默认情况下SPM依赖以动态链接方式引入,而你的框架未将这些依赖静态嵌入到最终的XCFramework中

解决方案步骤

1. 调整框架编译配置

打开Xcode项目,修改框架Target的Build Settings:

  • 设置BUILD_LIBRARY_FOR_DISTRIBUTION为YES
  • 设置MACH_O_TYPE为staticlib(静态库),这样SPM依赖会被静态链接到你的框架中,避免分发时出现依赖缺失
  • 若框架使用Swift编写,确保EMBEDDED_CONTENT_CONTAINS_SWIFT设为YES

2. 重新执行归档命令

归档时明确指定发布配置,并确保框架被正确安装到归档目录:

xcodebuild archive -project frameworkPOC.xcodeproj -scheme frameworkPOC -destination "generic/platform=iOS" -configuration Release -archivePath "archives/frameworkPOC" SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES
  • -configuration Release:用发布配置编译,避免调试符号干扰分发
  • SKIP_INSTALL=NO:强制将编译后的框架归档到Products/Library/Frameworks目录,这是生成XCFramework的必要路径

3. 生成XCFramework

执行原有创建命令即可,此时归档的框架已包含SPM依赖的静态符号:

xcodebuild -create-xcframework -archive archives/frameworkPOC.xcarchive -framework frameworkPOC.framework -output xcframeworks/frameworkPOC.xcframework

4. 验证依赖是否嵌入

用nm命令检查生成的框架是否包含Alamofire的符号:

nm -U xcframeworks/frameworkPOC.xcframework/ios-arm64/frameworkPOC.framework/frameworkPOC | grep Alamofire

若输出相关符号,说明依赖已成功嵌入。

额外注意事项

  • 若需支持多平台(如iOS、iOS Simulator),需分别为每个平台执行归档命令,再用-create-xcframework合并多个归档的框架
  • 如果必须使用动态框架(MACH_O_TYPE=dynamiclib),则需要将Alamofire也单独打包成XCFramework,分发时同时提供两个框架,使用时需同时引入
  • 优先选择静态库方式打包,可避免依赖分发的额外复杂度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 07:13:30