一、运用场景
编译一个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途径。
3.具体操作:
在终端检查用法
xcodebuild -create-xcframework -help
会发现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的用法跟一般framework相同的。