如何通过Microsoft App Center生成XCFramework通用框架?
结论
完全可以在Visual Studio App Center构建流程中生成XCFramework通用框架,不需要平台提供专门的Framework构建模板,依托平台开放的pre-build、post-build自定义脚本能力就能实现。
实现步骤
- 第一步先调整App Center的项目构建配置
不要选择常规iOS App的构建Scheme,直接选中你项目里用于打包Framework的独立Scheme,构建配置选择Release,提前确认该Scheme的Archive动作是可用状态,不需要勾选平台默认的IPA签名、分发选项,这部分逻辑我们会通过自定义脚本接管。 - 编写pre-build脚本(构建前执行)
如果你的Framework项目用了CocoaPods、Carthage之类的依赖管理工具,直接在这个脚本里执行依赖安装命令即可,比如用CocoaPods的话就执行pod install --repo-update,保证构建前依赖全部就位。 - 编写post-build脚本(构建后执行),核心是手动执行XCFramework编译打包逻辑,替换平台默认的IPA打包流程:
- 分别编译真机架构、模拟器架构的Framework归档,执行命令参考:
# 编译真机架构归档 xcodebuild archive -scheme "你的Framework名" \ -destination "generic/platform=iOS" \ -archivePath "./build/ios-device.xcarchive" \ SKIP_INSTALL=NO \ BUILD_LIBRARY_FOR_DISTRIBUTION=YES \ CODE_SIGNING_ALLOWED=NO # 编译模拟器架构归档 xcodebuild archive -scheme "你的Framework名" \ -destination "generic/platform=iOS Simulator" \ -archivePath "./build/ios-sim.xcarchive" \ SKIP_INSTALL=NO \ BUILD_LIBRARY_FOR_DISTRIBUTION=YES \ CODE_SIGNING_ALLOWED=NO - 将两个架构的归档合并生成最终XCFramework:
xcodebuild -create-xcframework \ -framework "./build/ios-device.xcarchive/Products/Library/Frameworks/你的Framework名.framework" \ -framework "./build/ios-sim.xcarchive/Products/Library/Frameworks/你的Framework名.framework" \ -output "./build/你的Framework名.xcframework" - 将生成的XCFramework打包为zip压缩包,移动到App Center固定的产物输出目录,这样构建完成后就能直接在构建记录页下载:
cd ./build zip -r "$APPCENTER_OUTPUT_DIRECTORY/你的Framework名.xcframework.zip" 你的Framework名.xcframework
- 分别编译真机架构、模拟器架构的Framework归档,执行命令参考:
注意事项
- 所有最终需要留存的产物必须移动到
$APPCENTER_OUTPUT_DIRECTORY目录下,App Center构建流程结束后会自动清理工作区其他路径的文件,不放到这个目录的话生成的XCFramework会被直接删除,无法下载。 - 编译阶段如果不需要给Framework签名,可以加上
CODE_SIGNING_ALLOWED=NO参数,避免App Center默认的签名配置和Framework构建逻辑冲突报错。 - 必须加上
BUILD_LIBRARY_FOR_DISTRIBUTION=YES参数,否则生成的XCFramework会存在Swift版本兼容问题,下游集成时很容易出现编译报错。 - 如果需要自动分发XCFramework,可以在post-build脚本最后调用App Center的命令行工具,把打包好的zip上传到指定的分发组即可。
内容的提问来源于stack exchange,提问作者Sathriyan V
相关产品推荐
相关产品推荐

