xcframework
是多个 framework
的集合,它是一个包含有多个 framework
的文件夹。
以腾讯云的 ImSDK 为例演示如何生成 ImSDK.xcframework
。
ImSDK.framework
里包含了 3 种架构:armv7
arm64
x86_64
,分别对应真机和模拟器。
创建 2 个文件夹,名称是 iphoneos
、iphonesimulator
,文件夹名字不是随便起的,需要和 Xcode 的 Build Settings
里的 target 一致。
mkdir iphoneos iphonesimulator
cp -r ImSDK.framework iphoneos/
cp -r ImSDK.framework iphonesimulator/
iphoneos
只能包含 arm 架构的库,真机使用。
iphonesimulator
只能包含 i386
或者 x86_64
的库,给模拟器用。
lipo -remove x86_64 ImSDK.framework/ImSDK \
-output iphoneos/ImSDK.framework/ImSDK
lipo -extract x86_64 ImSDK.framework/ImSDK \
-output iphonesimulator/ImSDK.framework/ImSDK
最后把 iphoneos/ImSDK.framework
和 iphonesimulator/ImSDK.framework
整合成 ImSDK.xcframework
:
xcodebuild -create-xcframework \
-framework iphoneos/ImSDK.framework \
-framework iphonesimulator/ImSDK.framework \
-output ImSDK.xcframework
把生成的 ImSDK.xcframework
拖到 Link Binary With Libraries
里。
因为 ImSDK 是动态库,是需要嵌入到 APP 里的,还需要设置为 Embed & Sign
才能正常运行,静态库则是 Do Not Embed
。
如果还想把 macOS 版本的 ImSDK.framework 一起集成到 xcframework 里,只需要再创建一个 macosx 目录,然后把 ImSDKForMac 改名为 ImSDK 就可以了。
以上操作可以使用脚本一键完成: https://github.com/cntrump/ImSDK-xcframework