創(chuàng)建XCFramework

XCFramework簡介

XCFramework是XCode11中提出的一個(gè)新特性吭狡,是由XCode創(chuàng)建的一個(gè)可分發(fā)的二進(jìn)制包,它包含了 framework 或 library 的一個(gè)或多個(gè)變體丈莺,因此可以在多個(gè)平臺(iOS划煮、macOS、tvOS场刑、watchOS) 上使用,包括模擬器蚪战。XCFramework 可以是靜態(tài)的牵现,也可以是動(dòng)態(tài)的。xcframework 的好處就是用 Xcode 發(fā)布的時(shí)候邀桑,Xcode 會(huì)自動(dòng)選用正確的指令集 Frameworks瞎疼,省去了手動(dòng)移除動(dòng)態(tài)庫中的模擬器指令集的工作。

作用

  • 包含模擬器和真機(jī)
  • 包含多個(gè)平臺:xcframework 支持所有的蘋果平臺壁畸,iOS贼急,macOS茅茂,tvOS,watchOS太抓,iPadOS空闲,carPlayOS
  • 可以包含其他第三方的庫
  • 可以不用設(shè)置復(fù)雜的頭文件路徑
  • 可以在庫里面設(shè)置權(quán)限
  • 二進(jìn)制的穩(wěn)定性
XCFramework的結(jié)構(gòu)

創(chuàng)建包含iOS真機(jī)、模擬器和MacOS的XCFramework

為所需平臺歸檔

iOS模擬器

xcodebuild -workspace "$WORKSPACE_NAME.xcworkspace"\
  -scheme  "$FRAMEWORK_NAME" -configuration "Release"\
  -sdk "iphonesimulator"\
  -arch i386 -arch x86_64 \
  -derivedDataPath "build/derivedData"\
  -archivePath "./build/simulator.xcarchive"\
  SKIP_INSTALL=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES

iOS真機(jī)

xcodebuild -workspace "$WORKSPACE_NAME.xcworkspace"\
  -scheme "$FRAMEWORK_NAME"\
  -arch armv7 -arch armv7s -arch arm64 \
  -configuration "Release"\
  -sdk "iphoneos"\
  -derivedDataPath "build/derivedData"\
  -archivePath "./build/ios.xcarchive"\
  SKIP_INSTALL=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES

MacOS

xcodebuild -workspace "$WORKSPACE_NAME.xcworkspace"\
 -scheme "$FRAMEWORK_NAME"\
 -configuration "Release"\
 -destination 'platform=macOS,arch=x86_64,variant=Mac Catalyst'\
 -sdk "$MAC_OS"\
 -derivedDataPath "build/derivedData"\
 -archivePath "./build/catalyst.xcarchive"\
 BUILD_LIBRARIES_FOR_DISTRIBUTION=YES SUPPORTS_MACCATALYST=YES SKIP_INSTALL=NO clean

由.a靜態(tài)庫創(chuàng)建Framework

iOS模擬器

# 創(chuàng)建simulator framework
PRODUCT_DIR=Products
BUILD_PRODUCTS_PATH="./build/derivedData/Build/Products"
SIMULATOR_FRAMEWORK_PATH="${BUILD_PRODUCTS_PATH}/Release-iphonesimulator/libBuglyOAUpgrade.a"
SIMULATOR_HEADERS="${BUILD_PRODUCTS_PATH}/Release-iphonesimulator/include/${FRAMEWORK_NAME}"

SIMULATOR_FRAMEWORK="${PRODUCT_DIR}/${FRAMEWORK_NAME}/simulator/${FRAMEWORK_NAME}.framework"
mkdir -p ${SIMULATOR_FRAMEWORK}/Headers
lipo -create ${SIMULATOR_FRAMEWORK_PATH} -output ${SIMULATOR_FRAMEWORK}/${FRAMEWORK_NAME}
cp -R ${SIMULATOR_HEADERS}/* ${SIMULATOR_FRAMEWORK}/Headers/

iOS真機(jī)

# 創(chuàng)建真機(jī) framework
PRODUCT_DIR=Products
BUILD_PRODUCTS_PATH="./build/derivedData/Build/Products"
IOS_FRAMEWORK_PATH="${BUILD_PRODUCTS_PATH}/Release-iphoneos/libBuglyOAUpgrade.a"
IOS_HEEADERS="${BUILD_PRODUCTS_PATH}/Release-iphoneos/include/${FRAMEWORK_NAME}"

IPHONE_FRAMEWORK="${PRODUCT_DIR}/${FRAMEWORK_NAME}/iphoneos/${FRAMEWORK_NAME}.framework"
mkdir -p ${IPHONE_FRAMEWORK}/Headers
lipo -create ${IOS_FRAMEWORK_PATH} -output ${IPHONE_FRAMEWORK}/${FRAMEWORK_NAME}
cp -R ${IOS_HEEADERS}/* ${IPHONE_FRAMEWORK}/Headers/

MacOS

# 創(chuàng)建mac-catalyst framework
PRODUCT_DIR=Products
BUILD_PRODUCTS_PATH="./build/derivedData/Build/Products"
CATALYST_FRAMEWORK_PATH="${BUILD_PRODUCTS_PATH}/Release-maccatalyst/libBuglyOAUpgrade.a"
CATALYST_HEADERS="${BUILD_PRODUCTS_PATH}/Release-maccatalyst/include/${FRAMEWORK_NAME}"

CATALYST_FRAMEWORK="${PRODUCT_DIR}/${FRAMEWORK_NAME}/catalyst/${FRAMEWORK_NAME}.framework"
mkdir -p ${CATALYST_FRAMEWORK}/Headers
lipo -create ${CATALYST_FRAMEWORK_PATH} -output ${CATALYST_FRAMEWORK}/${FRAMEWORK_NAME}
cp -R ${CATALYST_HEADERS}/* ${CATALYST_FRAMEWORK}/Headers/

創(chuàng)建xcframework

xcodebuild -create-xcframework \
-framework ${SIMULATOR_FRAMEWORK} \
-framework ${IPHONE_FRAMEWORK} \
-framework ${CATALYST_FRAMEWORK} \
-output "./$FRAMEWORK_NAME.xcframework"
zip -r XC_FRAMEWORK.zip "./$FRAMEWORK_NAME.xcframework"

相關(guān)文章

使用XCFramework的注意點(diǎn)
使用 Xcode 制作 Framework 與 XCFramework

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末走敌,一起剝皮案震驚了整個(gè)濱河市碴倾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌掉丽,老刑警劉巖跌榔,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異捶障,居然都是意外死亡僧须,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進(jìn)店門项炼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來担平,“玉大人,你說我怎么就攤上這事芥挣∏疲” “怎么了?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵空免,是天一觀的道長空另。 經(jīng)常有香客問我,道長蹋砚,這世上最難降的妖魔是什么扼菠? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮坝咐,結(jié)果婚禮上循榆,老公的妹妹穿的比我還像新娘。我一直安慰自己墨坚,他們只是感情好秧饮,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著泽篮,像睡著了一般盗尸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上帽撑,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天泼各,我揣著相機(jī)與錄音,去河邊找鬼亏拉。 笑死扣蜻,一個(gè)胖子當(dāng)著我的面吹牛逆巍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播莽使,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼锐极,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了吮旅?” 一聲冷哼從身側(cè)響起溪烤,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎庇勃,沒想到半個(gè)月后檬嘀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡责嚷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年鸳兽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片罕拂。...
    茶點(diǎn)故事閱讀 38,747評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡揍异,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出爆班,到底是詐尸還是另有隱情衷掷,我是刑警寧澤,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布柿菩,位于F島的核電站戚嗅,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏枢舶。R本人自食惡果不足惜懦胞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望凉泄。 院中可真熱鬧躏尉,春花似錦、人聲如沸后众。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蒂誉。三九已至教藻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拗盒,已是汗流浹背怖竭。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工锥债, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留陡蝇,地道東北人痊臭。 一個(gè)月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像登夫,于是被迫代替她去往敵國和親广匙。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評論 2 350