【iOS重學(xué)】制作.a靜態(tài)庫(kù)和.framework靜態(tài)庫(kù)的最全流程

寫(xiě)在前面

本文記錄的主要有兩點(diǎn):

  • .a靜態(tài)庫(kù)的制作流程以及使用
  • .framework靜態(tài)庫(kù)的制作流程以及使用

制作.a靜態(tài)庫(kù)

第一步:Xcode新建項(xiàng)目 - Frame & Library - Static Library促煮。

1.png

第二步:博主這里取名為:StaticLibrary,這里出現(xiàn)的兩個(gè)文件沒(méi)有用可以刪掉。
2.png

第三步:把想要打成靜態(tài)庫(kù)的文件放在StaticLibrary文件夾下面出革,博主這里以WWPerson文件為例潭流。
3.png

第四步:修改BuildSetting配置察署,將Build Active Architeture Only 設(shè)置為NO闯参。
4.png

第五步:添加需要暴露在外面的.h文件镊尺,.m文件會(huì)自動(dòng)編譯到.a文件中朽砰。
5.png

在未添加之前是下圖所示:
6.png

點(diǎn)擊+添加尖滚,添加之后:
7.png

8.png

需要注意的是:這里需要暴露的.h文件需要放在Public列表欄里面喉刘。
第六步:Edit Scheme - 模式改為release模式。
9.png

第八步:分別在真機(jī)和模擬器上都要Command+B編譯漆弄,編譯之后我們可以看到如下內(nèi)容睦裳。
10.png

其中,Release-iphoneos代表的是真機(jī)下的靜態(tài)庫(kù)文件撼唾,Release-iphonesimulator表示的是模擬器下的靜態(tài)文庫(kù)文件廉邑。

溫馨提示

  1. 在模擬器上編譯靜態(tài)庫(kù)時(shí)最好選擇高端一點(diǎn)的設(shè)備,這樣低端設(shè)備也可以用倒谷,如果選擇低端設(shè)備可能會(huì)出現(xiàn)在高端模擬器上出現(xiàn)錯(cuò)誤等問(wèn)題蛛蒙。
  2. 通過(guò)Xcode -Preferences- Location 可以找到上面的靜態(tài)庫(kù)內(nèi)容。
    11.png

到這里靜態(tài)庫(kù)的制作方法就基本完成了渤愁,但是還有一個(gè)重要的問(wèn)題我們還沒(méi)有解決牵祟,那就是模擬器和真機(jī)下的靜態(tài)庫(kù)需要合并,接下來(lái)我們看一下如何合并靜態(tài)庫(kù)抖格。

合并靜態(tài)庫(kù)

  • 新建一個(gè)文件夾用來(lái)存放真機(jī)和模擬器下打包出來(lái)的靜態(tài)庫(kù)诺苹,博主這里新建一個(gè)“合并靜態(tài)庫(kù)”的文件夾。


    12.png
  • 打開(kāi)終端雹拄,在終端輸入lipo -create 模擬器下的.a 真機(jī)下的.a -output 新合并的靜態(tài)庫(kù)的存放路徑收奔,如下:
    13.png

溫馨提示
如果在合并的過(guò)程中有人碰到跟博主一樣的錯(cuò)誤的話,請(qǐng)按照下面的方式修改Xcode配置滓玖,然后重新編譯生成新的.a靜態(tài)庫(kù):

14.png

出現(xiàn)錯(cuò)誤的原因在于:在Xcode12之后編譯的模擬器靜態(tài)庫(kù)也支持arm64坪哄,會(huì)導(dǎo)致真機(jī)和模擬器有相同的支持架構(gòu)arm64,這也就導(dǎo)致模擬器和真機(jī)不能合并的問(wèn)題势篡。
上面Xcode設(shè)置就是將arm64架構(gòu)移除损姜。

  • 合并之后,可以在目標(biāo)文件夾下看到我們剛合并的靜態(tài)庫(kù):


    15.png
  • 可以使用lipo -info看一下我們打出來(lái)的這個(gè)靜態(tài)庫(kù)支持的架構(gòu)是哪些:
    16.png

.a靜態(tài)庫(kù)的使用

靜態(tài)庫(kù)的使用很簡(jiǎn)單殊霞,只需要將暴露在外面的.h文件和.a靜態(tài)庫(kù)放在項(xiàng)目中即可使用:

17.png

.framework靜態(tài)庫(kù)制作流程

第一步:Xcode新建項(xiàng)目 - Frame & Library - Framework摧阅,將需要打包成framework靜態(tài)庫(kù)的文件資源等拖拽進(jìn)該項(xiàng)目。

18.png

配置framework

  1. Build Settings配置:
  • Product Name :可以修改名稱绷蹲,這里的名稱是最終打包出來(lái)的framework的名稱棒卷,博主這里叫PrintFramework
  • Mac-O Type:選擇Static Library祝钢。
  • Build Active Architeture Only:設(shè)置為NO比规。
  • Base SDK:選擇iOS
  • iOS Deployment Target:選擇打包出來(lái)的framework最低支持的iOS版本拦英。
  1. Build Phases配置:
  • Copy Bundle Resource:在這里面添加 framework項(xiàng)目使用到的一些資源文件蜒什,包括:xibplist疤估、圖片等灾常。
  • Link Binary With Libraries:在這里面添加 framework項(xiàng)目的依賴庫(kù)霎冯。
  • Compile Sourcesframework項(xiàng)目包含的實(shí)現(xiàn)文件。
  • Headers:將要暴露出來(lái)的頭文件放在public 下钞瀑,不需要暴露在外面的頭文件放在project下沈撞。

第二步:如果項(xiàng)目中用到了圖片、Xib等資源時(shí)需要?jiǎng)?chuàng)建一個(gè)Bundle:File - New - Target - macOS - Bundle雕什。

19.png

溫馨提示
在創(chuàng)建Bundle時(shí)的名稱不能和framework的名稱一樣缠俺,一樣會(huì)導(dǎo)致失敗。

配置Bundle

  • 選中BundleTarget贷岸,Product Name - 修改Bundle名稱壹士,博主這里叫PrintFramework
    22.png
  • Base SDK:修改為iOS偿警。
  • Supported Platforms:修改為iOS墓卦。
  • Enable Bitcode:設(shè)置為NO
  • COMBILE_HIDPI_IMAGES:設(shè)置為NO户敬。(避免Bundle中的圖片變成tiff格式而無(wú)法使用)

使用Bundle

  • framework項(xiàng)目中使用Bundle資源不能再通過(guò)直接獲取資源名稱來(lái)獲取落剪,需要通過(guò)獲取Bundle資源路徑來(lái)獲取資源,比如:
    26.png

    第三步:將創(chuàng)建好的Bundle添加到framework項(xiàng)目的依賴中去尿庐。
    23.png

    第四步:Edit Scheme - 模式改為release模式忠怖。
    第五步:分別在真機(jī)和模擬器下編譯framework項(xiàng)目,得到兩個(gè)文件如下:
    24.png

    到這里抄瑟,我們制作的framework靜態(tài)庫(kù)就基本完成凡泣,接下來(lái)就是和制作.a靜態(tài)庫(kù)一樣需要合并靜態(tài)庫(kù),博主這里久不過(guò)多闡述了皮假,按照上面的方式產(chǎn)生新的framework靜態(tài)庫(kù)鞋拟。
    21.png

    第六步:將新合并的framework文件替換掉之前的xxx.framework中的framework文件。

.framework靜態(tài)庫(kù)使用

將打包出來(lái)的xxx.frameworkBundle導(dǎo)入項(xiàng)目中即可使用:

25.png

到這里惹资,關(guān)于.framework靜態(tài)庫(kù)的制作方法就結(jié)束了贺纲。

寫(xiě)在最后

iOS中關(guān)于制作.a.framework靜態(tài)庫(kù)的流程到這里就基本結(jié)束了,下一篇文章博主將來(lái)詳細(xì)講一下靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)的區(qū)別褪测,最后歡迎大家去我的個(gè)人技術(shù)博客逛逛猴誊。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市侮措,隨后出現(xiàn)的幾起案子懈叹,更是在濱河造成了極大的恐慌,老刑警劉巖分扎,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件澄成,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)墨状,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)卫漫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人歉胶,你說(shuō)我怎么就攤上這事“头啵” “怎么了通今?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)肛根。 經(jīng)常有香客問(wèn)我辫塌,道長(zhǎng),這世上最難降的妖魔是什么派哲? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任臼氨,我火速辦了婚禮,結(jié)果婚禮上芭届,老公的妹妹穿的比我還像新娘储矩。我一直安慰自己,他們只是感情好褂乍,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布持隧。 她就那樣靜靜地躺著,像睡著了一般逃片。 火紅的嫁衣襯著肌膚如雪屡拨。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,146評(píng)論 1 297
  • 那天褥实,我揣著相機(jī)與錄音呀狼,去河邊找鬼。 笑死损离,一個(gè)胖子當(dāng)著我的面吹牛哥艇,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播僻澎,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼她奥,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了怎棱?” 一聲冷哼從身側(cè)響起哩俭,我...
    開(kāi)封第一講書(shū)人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拳恋,沒(méi)想到半個(gè)月后凡资,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年隙赁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了垦藏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡伞访,死狀恐怖掂骏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情厚掷,我是刑警寧澤弟灼,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站冒黑,受9級(jí)特大地震影響田绑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜抡爹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一掩驱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧冬竟,春花似錦欧穴、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至袋狞,卻和暖如春焚辅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背苟鸯。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工同蜻, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人早处。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓湾蔓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親砌梆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子默责,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

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