如何让Xcode生成.xcframework而非.framework?
如何让Xcode生成.xcframework而非.framework?
我完全懂你的困扰——Xcode 16新建Framework项目时确实没提供直接选择生成xcframework的选项,但其实有两种简单靠谱的方法可以实现,下面一步步教你:
方法一:通过Xcode归档导出(可视化操作,适合新手)
- 打开你的Framework项目,先确认已经配置好需要支持的目标平台(比如iOS、macOS等,按需添加)
- 点击顶部菜单栏的
Product > Archive,等待归档完成后,会自动弹出Organizer窗口 - 在Organizer里选中刚完成的归档包,点击右下角的 Distribute Content 按钮
- 在弹出的窗口中选择
Framework & Library,点击Next - 接下来在分发选项里勾选
XCFramework,然后选择你需要包含的平台架构(比如arm64、x86_64),点击Next - 最后选择一个保存路径,点击
Export,稍等片刻就能拿到打包好的xcframework文件了
方法二:用命令行手动打包(更灵活,适合多平台定制)
这种方法适合需要精准控制打包平台的场景,步骤如下:
- 先分别编译不同平台的framework包:
- 编译iOS设备版本:
xcodebuild archive -scheme [你的Scheme名称] -destination "generic/platform=iOS" -archivePath "./build/ios.xcarchive" SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES - 编译iOS模拟器版本:
xcodebuild archive -scheme [你的Scheme名称] -destination "generic/platform=iOS Simulator" -archivePath "./build/iossim.xcarchive" SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES
destination参数对应的平台即可) - 编译iOS设备版本:
- 把编译好的多个framework合并成xcframework:
xcodebuild -create-xcframework -framework ./build/ios.xcarchive/Products/Library/Frameworks/[你的Framework名称].framework -framework ./build/iossim.xcarchive/Products/Library/Frameworks/[你的Framework名称].framework -output ./build/[你的XCFramework名称].xcframework - 执行完命令后,去你指定的
./build目录下,就能找到生成好的xcframework文件了
小提示:如果想让项目每次Build都自动生成xcframework,还可以给目标添加Run Script脚本,但上面两种方法已经能满足大部分日常需求啦。
备注:内容来源于stack exchange,提问作者GruntBiscuits




