iOS XCFramework 制作

注意:文中的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>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容