一、使用场景
编译一个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
-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目录展示
xcframework的用法跟普通framework一样的。
网友评论