如何创建同时包含Debug和Release版本的xcframework?
XCFramework 适配 Debug/Release 自动切换方案
1. 可以将 Debug 和 Release 版本打包进同一个 XCFramework
这是Xcode官方推荐的做法,能让用户无需额外配置即可自动匹配对应版本。
打包步骤:
- 先分别编译出 Debug 和 Release 版本的
.framework(若原先是.a文件,可先封装成.framework,也可直接用.a打包XCFramework,更推荐前者) - 使用
xcodebuild命令合并两个版本:
xcodebuild -create-xcframework \ -framework ./Build/Debug/MyLib.framework \ -framework ./Build/Release/MyLib.framework \ -output MyLib.xcframework
生成的 XCFramework 内部会自动区分 Debug/Release 目录,Xcode 会根据当前项目的配置(Debug/Release)自动加载对应版本的库。
用户集成时只需:
- 将生成的 XCFramework 拖入项目
- 确保项目 Build Settings 中
Build Libraries for Distribution设为YES(Swift 库必填,OC 库建议开启) - 无需手动设置 Linker Flags 或 Library Search Path,Xcode 会自动处理链接逻辑
2. 分开打包的自动切换方案
如果不想将两个版本合并(比如考虑体积),可以分别打包成 MyLibDebug.xcframework 和 MyLibRelease.xcframework,然后通过以下方式让 Xcode 自动选择:
- 在项目的 Build Phases > Link Binary With Libraries 中,移除已添加的 XCFramework
- 分别添加两个版本的 XCFramework,然后为每个库设置条件:
- 选中 Debug 版本的 XCFramework,在右侧检查器的
Condition选项中选择Debug - 选中 Release 版本的 XCFramework,设置
Condition为Release
- 选中 Debug 版本的 XCFramework,在右侧检查器的
- 切换项目配置时,Xcode 会自动链接对应版本的库
你可能忽略的关键操作
- 打包时确保 Debug/Release 版本的产物架构一致(比如都包含 arm64、x86_64),否则 Xcode 无法正确匹配
- Swift 库的 Debug 版本要保留调试符号,Release 版本开启优化,打包时不要混淆两种配置的产物
- 集成后可以切换配置,查看 Report Navigator 中的链接日志,确认是否加载了正确版本的库
内容的提问来源于stack exchange,提问作者Brunni
相关产品推荐
相关产品推荐

