一、运用场景

编译一个framework出来,依据支撑的渠道和Debug、Release的不同它分为 Debug-iphonesimulator Debug-iphoneos Debug-maccatalyst Release-iphonesimulator Release-iphoneos Release-maccatalyst 等情况。 当然了,咱们正式环境下运用的都是Release。但如何同时支撑多个渠道呢?又或者怎么同时支撑模拟器和真机调试呢?(第二个问题包含在第一个里,由于模拟器是i386和x86_64,真机是arm64和armv7,不同渠道无非是处理器的指令集不相同嘛)

这时候需求兼并, 会运用到xcodebuild -create-xcframework指令


二、阐明

这个指令不是像lipo -create指令相同兼并,而是通过plist文件来操控不同渠道下加载不同的.framework。后面会截图展示目录结构。


三、运用

1.意图:

便是要解决开篇说道的问题。把指定库做成适合用在模拟器和真机上的库。

2.准备工作:

假定咱们有一个库MyTools.framework。 把framework工程分别在模拟器和真机情况下build一遍。 Products -> Show in Finder 翻开framework途径。

xcframework制作

xcframework制作

3.具体操作:

在终端检查用法

xcodebuild -create-xcframework -help

xcframework制作
会发现xcodebuild -create-xcframework -framework <path> [-framework <path>...] -output <path> 用法一望而知了

xcodebuild -create-xcframework -framework <第一个库的途径> -framework <第二个库的途径> -output <输出途径/库称号.xcframework>

接下模拟正式情况用一下的运用:

xcodebuild -create-xcframework -framework /Users/admin/Library/Developer/Xcode/DerivedData/MyTools-ciyqnqacjemhpfbqswwhrlyvstsb/Build/Products/Release-iphoneos/MyTools.framework -framework /Users/admin/Library/Developer/Xcode/DerivedData/MyTools-ciyqnqacjemhpfbqswwhrlyvstsb/Build/Products/Release-iphonesimulator/MyTools.framework -output ~/Desktop/MyToolsOutput/MyTools.xcframework
// 成功后的日志
xcframework successfully written out to: /Users/admin/Desktop/MyToolsOutput/MyTools.xcframework

提示: -framework <第一个库的途径> -framework <第二个库的途径> -framework <第三个库的途径> 能够多个看需求而定,兼并几个渠道的就写几个上去

最终

咱们会拿到如下目录结构的xcframework文件

xcframework制作
xcframework的用法跟一般framework相同的。