目录
一、XCFramework简介
XCFramework:是苹果官方推荐的、支持的,可以更方便的表示一个多个平台和架构的分发进制库的格式。
需要Xcode11
以上支持。
是为更好的支持Mac Catalyst
和ARM
芯片的macOS
。
专门在2019年提出的Framework
的另一种先进格式。
和传统的Framework相比:
- 可以用单个.xcframework文件提供多个平台的分发二进制文件;
- 与Fat Header相比,可以按照平台划分,可以包含相同架构的不同平台的文件;
- 在使用时,不需要再通过脚本去剥离不需要的架构体系。
二、创建XCFramework
准备如下代码:
1、创建模拟器和真机平台下的Framework
build.sh
中的命令如下:
xcodebuild archive -project 'SYTimer.xcodeproj' \
-scheme 'SYTimer' \
-configuration Release \
-destination 'generic/platform=iOS Simulator' \
-archivePath '../archives/SYTimer.framework-iphonesimulator.xcarchive' \
SKIP_INSTALL=NO
xcodebuild archive -project 'SYTimer.xcodeproj' \
-scheme 'SYTimer' \
-configuration Release \
-destination 'generic/platform=iOS' \
-archivePath '../archives/SYTimer.framework-iphoneos.xcarchive' \
SKIP_INSTALL=NO
执行build.sh
脚本:
2、创建XCFramework
创建xcframework文件夹
cd xcframework文件夹路径
xcodebuild -create-xcframework \
-framework '../archives/SYTimer.framework-iphoneos.xcarchive/Products/Library/Frameworks/SYTimer.framework' \
-framework '../archives/SYTimer.framework-iphonesimulator.xcarchive/Products/Library/Frameworks/SYTimer.framework' \
-output 'SYTimer.xcframework'
一般XCFramework需要包含BitCode和dSYMs方便崩溃时恢复调用栈,那么修改创建XCFramework的命令如下:
xcodebuild -create-xcframework \
-framework '../archives/SYTimer.framework-iphoneos.xcarchive/Products/Library/Frameworks/SYTimer.framework' \
-debug-symbols '/Users/ztkj/Desktop/创建XCFramework/archives/SYTimer.framework-iphoneos.xcarchive/BCSymbolMaps/1F3E7957-8302-390B-AE49-34E61B49E11E.bcsymbolmap' \
-debug-symbols '/Users/ztkj/Desktop/创建XCFramework/archives/SYTimer.framework-iphoneos.xcarchive/BCSymbolMaps/5C6DD85F-0EFE-3551-B330-5AC4A91D32ED.bcsymbolmap' \
-debug-symbols '/Users/ztkj/Desktop/创建XCFramework/archives/SYTimer.framework-iphoneos.xcarchive/dSYMs/SYTimer.framework.dSYM' \
-framework '../archives/SYTimer.framework-iphonesimulator.xcarchive/Products/Library/Frameworks/SYTimer.framework' \
-debug-symbols '/Users/ztkj/Desktop/创建XCFramework/archives/SYTimer.framework-iphonesimulator.xcarchive/dSYMs/SYTimer.framework.dSYM' \
-output 'SYTimer.xcframework'
⚠️注意:1、只有真机才有BitCode。2、BitCode和dSYMs的文件路径必须传绝对路径
3、lipo合并不同平台的Framework要求Framework之间不能有相同的架构
3、使用XCFramework
Xcode
会根据不同的编译平台拷贝XCFramework
中相应平台架构下的二进制代码
参考
Session视频地址
developer.apple.com/videos/play…
文档说明
devstreaming-cdn.apple.com/videos/wwdc…
网友评论