iOS XCFramework

XCFramework

XCFramework是蘋(píng)果官方2019年提出的Framework的另一種先進(jìn)格式,可以更方便的表示一個(gè)平臺(tái)和架構(gòu)的分發(fā)二進(jìn)制庫(kù)的格式,需要Xcode11以上的支持,可以更好的支持Mac Catalyst和ARM芯片的macOS

  • 可以用單個(gè).xcframework文件提供多個(gè)平臺(tái)的分發(fā)二進(jìn)制文件
  • 和傳統(tǒng)Fat Header相比,可以按照平臺(tái)劃分,可以包含相同架構(gòu)的不同平臺(tái)的文件
  • 使用時(shí),不需要通過(guò)腳本剝離不需要的架構(gòu)體系

編譯打包

  • 自己準(zhǔn)備一個(gè)framework

    image.png

  • 通過(guò)xcodebuild archive命令編譯打包成真機(jī)和模擬器架構(gòu)

xcodebuild archive -project 'SYTimer.xcodeproj' \  //指定project
-scheme 'SYTimer' \                                //指定Scheme -- 環(huán)境
-configuration Release \                           //指定configuration 配置
-destination 'generic/platform=iOS Simulator' \    //指定分發(fā)的平臺(tái) -- 模擬器 iOS Simulator  真機(jī) iOS
-archivePath '../archives/SYTimer.framework-iphonesimulator.xcarchive' \  //指定輸出路徑
SKIP_INSTALL=NO                                    //將編譯的產(chǎn)物拷貝到 archivePath/Products/Library/Frameworks/ 目錄中
  • SKIP_INSTALL=NO 會(huì)將編譯的產(chǎn)物拷貝到 archivePath/Products/Library/Frameworks/ 目錄中
    image.png

lipo 傳統(tǒng)合并

  • lipo -output <輸出文件名> -create <Framework1> <Framework2>命令合并兩個(gè)不同架構(gòu)的動(dòng)態(tài)庫(kù),相同架構(gòu)的不能合并
lipo -output SYTimer -create ../archives/SYTimer.framework-iphoneos.xcarchive/Products/Library/Frameworks/SYTimer.framework/SYTimer ../archives/SYTimer.framework-iphonesimulator.xcarchive/Products/Library/Frameworks/SYTimer.framework/SYTimer
  • lipo -output <輸出文件名> -extract <提取的架構(gòu)> <Framework>從Framework中提取指定架構(gòu)的Framework
lipo -output SYTimer-x86_64 -extract x86_64 ../archives/SYTimer.framework-iphonesimulator.xcarchive/Products/Library/Frameworks/SYTimer.framework/SYTimer
  • 在使用lipo命令合并傳統(tǒng)的Framework時(shí),我們需要針對(duì)不同的架構(gòu)來(lái)簽名、處理頭文件和資源文件、提供dSYM文件等,而且相同架構(gòu)的不能合并

xcframework合并

  • xcodebuild -create-xcframework命令合并Framework
xcodebuild -create-xcframework \
-framework '../archives/SYTimer.framework-iphoneos.xcarchive/Products/Library/Frameworks/SYTimer.framework' \               //需要合并的Framework1

-debug-symbols '/Users/yp/Desktop/archives/SYTimer.framework-iphoneos.xcarchive/BCSymbolMaps/9D87CD30-46F3-302A-ADCF-BF46F07578D4.bcsymbolmap' \    //Framework1 的調(diào)試符號(hào) -- 必須是絕對(duì)路徑 -- 要開(kāi)啟bitCode才會(huì)有
-debug-symbols '/Users/yp/Desktop/archives/SYTimer.framework-iphoneos.xcarchive/BCSymbolMaps/ACA28AC6-6E0E-3F6F-8105-BC1175739A0B.bcsymbolmap' \    //Framework1 的調(diào)試符號(hào) -- 必須是絕對(duì)路徑 -- 要開(kāi)啟bitCode才會(huì)有
-debug-symbols '/Users/yp/Desktop/archives/SYTimer.framework-iphoneos.xcarchive/dSYMs/SYTimer.framework.dSYM' \             //Framework1 的 dSYM調(diào)試符號(hào) -- 必須是絕對(duì)路徑

-framework '../archives/SYTimer.framework-iphonesimulator.xcarchive/Products/Library/Frameworks/SYTimer.framework' \        //需要合并的Framework2
-debug-symbols '/Users/yp/archives/SYTimer.framework-iphonesimulator.xcarchive/dSYMs/SYTimer.framework.dSYM' \              //Framework2 的 dSYM調(diào)試符號(hào) -- 必須是絕對(duì)路徑
-output 'SYTimer.xcframework'                                                                                               //輸出xcframework 
image.png
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.XCFramework XCFramework:是蘋(píng)果官方推薦的,支持的,可以更方便的表示一個(gè)多個(gè)平臺(tái)結(jié)構(gòu)的分...
    MonKey_Money閱讀 1,347評(píng)論 0 2
  • 什么是動(dòng)態(tài)庫(kù)? 與靜態(tài)庫(kù)相反,動(dòng)態(tài)庫(kù)在編譯時(shí)并不會(huì)被拷?到?標(biāo)程序中,?標(biāo)程序中只會(huì)存儲(chǔ)指向動(dòng)態(tài)庫(kù)的引?。等到程序...
    帥駝駝閱讀 788評(píng)論 0 5
  • 使用 Xcode 制作 Framework 與 XCFramework 最近公司有個(gè)項(xiàng)目外包,我就負(fù)責(zé)提供離在線語(yǔ)...
    幽翼星穹閱讀 22,647評(píng)論 4 47
  • 常用庫(kù)文件格式 .a:靜態(tài)庫(kù) .dylib:動(dòng)態(tài)庫(kù) .framework:動(dòng)靜結(jié)合的庫(kù) .xcframework:...
    Mjs閱讀 1,441評(píng)論 0 1
  • 一、靜態(tài)庫(kù)簡(jiǎn)介 1.1、庫(kù):是程序代碼的集合,是共享程序代碼的一種方式。 1.2、根據(jù)源代碼的公開(kāi)情況,庫(kù)可以分為...
    IIronMan閱讀 5,845評(píng)論 18 29

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