注意:文中的LGL為測(cè)試用framework項(xiàng)目名,要替換成你自己的項(xiàng)目名稱。
XCFramework簡(jiǎn)介
XCFramework:是蘋果官?推薦的、?持的,可以更?便的表示?個(gè)多個(gè)平臺(tái)和架構(gòu)的分發(fā)?進(jìn)制庫(kù)的格式。需要Xcode11以上?持。是為更好的?持Mac Catalyst(用于 iPad)和ARM芯?的macOS。專?在2019年提出的framework的另?種先進(jìn)格式。
XCFramework和傳統(tǒng)的framework相?的三個(gè)優(yōu)點(diǎn):
可以?單個(gè).xcframework?件提供多個(gè)平臺(tái)的分發(fā)?進(jìn)制?件;
與Fat Header相?,可以按照平臺(tái)劃分,可以包含相同架構(gòu)的不同平臺(tái)的?件;
在使?時(shí),不需要再通過(guò)腳本去剝離不需要的架構(gòu)體系。
XCFramework 生成
1. 創(chuàng)建Framework項(xiàng)目
如圖:

image-20230711113053798.png

image-20230711142851337.png

image-20230711143146310.png
2. 通過(guò)xcodebuild archive命令編譯打包成真機(jī)和模擬器架構(gòu)
cd進(jìn)入LGL的項(xiàng)目,終端執(zhí)行這兩段代碼(注意Test替換成你的項(xiàng)目名稱)。
xcodebuild archive -project 'Test.xcodeproj' \
-scheme 'Test' \
-configuration Release \
-destination 'generic/platform=iOS Simulator' \
-archivePath '../archives/Test.framework-iphonesimulator.xcarchive' \
SKIP_INSTALL=NO
xcodebuild archive -project 'Test.xcodeproj' \
-scheme 'Test' \
-configuration Release \
-destination 'generic/platform=iOS' \
-archivePath '../archives/Test.framework-iphoneos.xcarchive' \
SKIP_INSTALL=NO
-
xcodebuild: 在Xcode中實(shí)際使用的命令。 -
archive: 打包。 -
project: 工程名。 -
scheme: 選擇 scheme。 -
configuration: 哪種環(huán)境下。 -
destination: 要分發(fā)的平臺(tái),模擬器:iOS Simulator,真機(jī):iOS。 -
archivePath: 壓縮之后,存放的路徑。 -
SKIP_INSTALL=NO:如果設(shè)置為YES,則不會(huì)將生成的framwork文件存放在Products目錄下。
3. 合并真機(jī)和模擬器的framework 生成.xcframework
cd進(jìn)入剛才生成的archives文件,終端執(zhí)行下面命令
xcodebuild -create-xcframework \
-framework '../archives/Test.framework-iphoneos.xcarchive/Products/Library/Frameworks/Test.framework' \
-framework '../archives/Test.framework-iphonesimulator.xcarchive/Products/Library/Frameworks/Test.framework' \
-output 'Test.xcframework'
- xcodebuild -create-xcframework: 創(chuàng)建 xcframework;
- -framework:要合并的framework地址(一個(gè)真機(jī)一個(gè)模擬器);
- -output:輸出 xcframework。
制作完成
將制作好的xcframework拖入并使用,導(dǎo)入頭文件即可#import <Test/Test.h>