Framework轉(zhuǎn)換XCFramework之旅

先說一下XCFramework的好處吧:

1.多架構(gòu)合并打掘,模擬器,真機可以通用隨便跑
2.上架AppStore,不需要將xcframework中的真機架構(gòu)分離啰挪,.framework還需要用腳本分離呐矾,這點太香了

Framework簡單解析

拿百度OCR中的舉例吧苔埋,其實.framework就是個文件夾里面裝著封裝好的可執(zhí)行文件,頭文件蜒犯,Modules文件 info.plist

Framework結(jié)構(gòu)

Framework中的靈魂就是可執(zhí)行文件:通過lipo -info查看.framework中的可執(zhí)行文件中包含的架構(gòu):

查看架構(gòu)

.xcframework構(gòu)造

.xcframework是由兩個文件夾和一個配置文件組成组橄。
兩個文件夾分別代表的是
arm64 以及 armv7的真機支持
i386 以及 x86_64的模擬器支持
在編譯過程中荞膘,編譯器通過識別設(shè)備的架構(gòu)不同架構(gòu)的設(shè)備,去xcframework中取對應的支持執(zhí)行文件玉工,
xcframework只是封裝了真機和模擬器的.framework.

xcframework結(jié)構(gòu)

Framework架構(gòu)的分離以及合并:

xcframework的結(jié)構(gòu)了解明白了羽资,我們就需要按照上邊的規(guī)則進行拆解:

核心思路:

1.將多架構(gòu)的.framework 中的所有架構(gòu)的執(zhí)行文件全部分離出來(arm64,armv7遵班,x86_64,i386)
2.拆解后屠升,真機架構(gòu)(arm64)和真機架構(gòu)(armv7)合并
3.拆解后,模擬器架構(gòu)(x86_64)和模擬器架構(gòu)(i386)合并
4.兩個執(zhí)行文件創(chuàng)建好后费奸,手動生成兩個.framework 格式文件
5.將原來的.framework中除了執(zhí)行文件弥激,原封不動的拷貝到我們手動創(chuàng)建的.framework(如果不拷貝會出編譯時會各種奇怪的問題)
6.在終端通指令xcodebuild -create-xcframework指令生成xcframework

核心的關(guān)鍵指令如下:

分離指令:

將i386的架構(gòu)從原來的AipOcrSdk 分離出來并且命名為AipOcrSdk-id386

分離指令

4個獨立架構(gòu)的執(zhí)行文件如圖:

image.png
合并指令:

將分離好的模擬器架構(gòu)執(zhí)行文件合并:將x86_64和i386合并命名為AIPOcrSdkX86

合并指令

真機和模擬器合并后的執(zhí)行文件:

image.png

手動制作.framework流程:切記執(zhí)行文件生成.framework命名
要一致
要一致
要一致
將原來.framework中除執(zhí)行文件以外的文件全部拷貝到我們自己生成的.framework

image.png

最后生成xcramework:

image.png

生成成功后的xcframework

這塊復制路徑切記不要加入空格否則會導致生成失敗

image.png

將xcframework導入項目:

image.png

最后說幾個生成XCFramework 踩的坑:

1.如果我們導入的庫是動態(tài)庫:一定要在Embed Frameworks導入:

image.png

2.模擬器架構(gòu)配置問題:Could not find module 'xxxxxxx' for target 'arm64-apple-ios-simulator';
按照如下配置:

1.Architectures選項愿阐,設(shè)置他的值為Standard architectures - $(ARCHS_STANDARD)
2.xcode里面的Build Active Architectures Only選項微服,debug為Yes,release為No
3.xcode里面的Excluded Architectures選項缨历,保留為空(網(wǎng)上不斷在這里加arm64的以蕴,其實不用)
4.xcode里面的VALID_ARCHS選項,設(shè)置他的值為arm64 arm64e x86_64

3.如果一個.framework只有真機庫辛孵,需要在模擬器中運行丛肮,此時加載庫的時候會報錯。
解決方法:在Excluded Source File Names中配置
只有在模擬器環(huán)境下魄缚,不使用的庫:(如果在代碼中還要加上#if TARGET_OS_SIMULATOR進行模擬器的邏輯判斷宝与。)

image.png

4.Podfile中配置架構(gòu)模式:
在我們Podfile 尾部復制以下代碼中加入模擬器的配置:

post_install do |installer|
installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
        if config.name == 'Debug'
          config.build_settings["VALID_ARCHS"] = "arm64 arm64e x86_64 i386"
        else
          config.build_settings["VALID_ARCHS"] = "arm64 arm64e"
        end
    end
end
end

添加完畢后,從新執(zhí)行pod install冶匹。
執(zhí)行clean习劫,從新運行即可

前4項都是模擬器編譯可能出現(xiàn)的問題。

5.最后如果想要使用xcframework 嚼隘,在File -> workspcaeSetting 中只用new Buil System

image.png

先說到這把诽里,有問題歡迎留言。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末飞蛹,一起剝皮案震驚了整個濱河市谤狡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌卧檐,老刑警劉巖墓懂,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異泄隔,居然都是意外死亡拒贱,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來逻澳,“玉大人闸天,你說我怎么就攤上這事⌒弊觯” “怎么了苞氮?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長瓤逼。 經(jīng)常有香客問我笼吟,道長,這世上最難降的妖魔是什么霸旗? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任贷帮,我火速辦了婚禮,結(jié)果婚禮上诱告,老公的妹妹穿的比我還像新娘撵枢。我一直安慰自己,他們只是感情好精居,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布锄禽。 她就那樣靜靜地躺著,像睡著了一般靴姿。 火紅的嫁衣襯著肌膚如雪沃但。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天佛吓,我揣著相機與錄音宵晚,去河邊找鬼。 笑死维雇,一個胖子當著我的面吹牛坝疼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播谆沃,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼仪芒!你這毒婦竟也來了唁影?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤掂名,失蹤者是張志新(化名)和其女友劉穎据沈,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體饺蔑,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡锌介,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片孔祸。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡隆敢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出崔慧,到底是詐尸還是另有隱情拂蝎,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布惶室,位于F島的核電站温自,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏皇钞。R本人自食惡果不足惜悼泌,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望夹界。 院中可真熱鬧馆里,春花似錦、人聲如沸掉盅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽趾痘。三九已至慢哈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間永票,已是汗流浹背卵贱。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留侣集,地道東北人键俱。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像世分,于是被迫代替她去往敵國和親编振。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容