Framework转换XCFramework之旅
XCFramework 是 Apple 推荐的 Framework 分发格式,支持多架构合并。本文详细介绍从 Framework 到 XCFramework 的转换流程。
先说一下XCFramework的好处吧:
- 多架构合并,模拟器,真机可以通用随便跑
- 上架AppStore,不需要将
.xcframework中的真机架构分离,.framework还需要用脚本分离,这实在太棒了
Framework简单解析
拿腾讯IM的举例吧,其实.framework就是个文件夹里面装着封装好的文件。
1 | % cd path/ImSDK.framework # path 为 framework 路径 |
通过lipo -info查看.framework中的可执行文件中包含的架构:
1 | ImSDK.framework % lipo -info ImSDK |
XCFramework简单解析
.xcframework是由两个文件夹和一个配置文件组成:
1 | ImSDK.xcframework % tree -L 1 |
在编译过程中,编译器通过识别设备的架构不同架构的设备,去.xcframework中取对应的支持执行文件。
.xcframework只是封装了真机和模拟器的.framework
Framework架构的分离以及合并
- 将多架构的
.framework中的所有架构的执行文件全部分离出来(arm64,armv7,x86_64,i386)(不一定全部有
1 | ImSDK.framework % lipo ImSDK -thin x86_64 -output ImSDK-x86_64 |
- 拆解后,真机架构(arm64)和真机架构(armv7)合并
1 | % mkdir -p ImSDK-arm/ImSDK.framework |
- 拆解后,模拟器架构(x86_64)和模拟器架构(i386)合并。(有几个合并几个
1 | % mkdir -p ImSDK-simulator/ImSDK.framework |
- 将原来的
.framework中除了可执行文件,原封不动的拷贝到我们手动创建的.framework。(如果不拷贝会出编译时会各种奇怪的问题)
1 | # 真机 |
- 在终端通指令
xcodebuild -create-xcframework指令生成xcframework
1 | xcodebuild -create-xcframework -framework ImSDK-arm/ImSDK.framework -framework ImSDK-simulator/ImSDK.framework -output ImSDK.xcframework |
提示 xcframework successfully written out to: path/ImSDK.framework/ImSDK.xcframework即合并成功
完成以上步骤后即可生成XCFramework,用法和Framework一样
最后如果想要使用xcframework ,在File -> workspcaeSetting 中只用new Build System
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Jerome Xiong!
评论

