自定義三方SDK靜態(tài)庫、.framework

靜態(tài)庫和動態(tài)庫的存在形式

靜態(tài)庫: .a 和 .framework
動態(tài)庫: .dylib 和 .framework

靜態(tài)庫和動態(tài)庫的使用區(qū)別:

靜態(tài)庫:鏈接時,靜態(tài)庫會被完整地復(fù)制到可執(zhí)行文件中,缺點:【被多次使用,就有多份冗余拷貝】

動態(tài)庫:鏈接時不復(fù)制,程序運行時由系統(tǒng)動態(tài)加載到內(nèi)存里,供程序調(diào)用,系統(tǒng)只加載一次!多個程序共享資源,節(jié)約內(nèi)存!
注意:項目中如果使用了自制的動態(tài)庫,不能被上傳到AppStore, 除非你越獄了。

.a 靜態(tài)庫 和 .framework的異同:

共同點: 最終都是轉(zhuǎn)化為二進制文件+.h 文件+其它文件,才能使用。

不同點: .a 本身是一個二進制文件,需要配上.h 和其它資源文件才能使用;.framework 本身已經(jīng)包含了 .h 和其它資源文件。它包含了所有東西。

靜態(tài)庫的特點

.a + .h ,.a配合上公共的 .h 文件,我們可以獲取到.a 中暴露的方法或者成員等,你不能控制加載的方式和時機.

在編譯靜態(tài)庫時,需要編譯兩個版本 -> 真機(arm) | 模擬器(i386)

靜態(tài)庫中的資源包的使用

由于Xcode默認(rèn)在編譯時會把所有的素材文件導(dǎo)入到mainBundle中,為了避免與使用靜態(tài)庫的程序沖突。
在靜態(tài)庫中如果要使用圖片素材,會利用bundle的手段

1> 建立bundle,并且向其中添加圖片
2> 創(chuàng)建一個類方法,返回圖片
3> 編譯
4> 調(diào)用方如果需要使用,需要導(dǎo)入 .h + .a + XXX.bundle

制作.a靜態(tài)庫步驟:
1.創(chuàng)建一個靜態(tài)庫工程
EF38F9E7-190A-41AA-BAB6-562C4DDB9748.png
6C4723E3-8172-4074-87F9-7791EAB7EBF1.png
2.倒入已經(jīng)創(chuàng)建好的文件

我把自動生成的文件刪除了,因為那個并沒什么卵用

733CAE4E-DB57-470A-8759-87E58FF38032.png

根據(jù)我的步驟添加項目


D032564C-196A-41B7-9846-BA761DA72C4C.png

接下來會多出這樣一個頭文件夾


0A542823-7C5A-4FC5-B0A4-EF676383C3F6.png

暴漏.h頭文件


155D4669-2BC5-43D5-B8A0-60AAC795F20F.png

默認(rèn)是加入到了Project文件夾,手動拖到Public里就好了

01B76BC4-AF98-40EB-95EC-11AD44F5A001.png
95E01995-6318-4494-8994-9A3DF617ACA3.png

靜態(tài)庫分真機和 模擬版本的

44A417C9-981A-43FC-866D-7E718304FF92.png

真機版本analyze一下


3CB70562-65CC-4A40-9AB6-271F8C0343A2.png

Product文件夾下的就由紅色變?yōu)楹谏?證明真機版本已經(jīng)生成成功了

ECCE611F-DA2A-4D9A-868E-5550D1BF5FD7.png
4DB95B4C-E7EE-4368-BDCF-859F5A3780CE.png
9019AE31-F990-426B-A9CF-2EBE900523DE.png

模擬器版本的和真機的步驟一樣,我就不贅述了

05CDB6C3-22DD-47EB-B13D-463B9E542EFC.png

合并真機和模擬器版本

EB04759F-B94F-4E1B-A096-9F7E1EA20A65.png

使用命令行l(wèi)ipo -create合并

4C53EF91-BEB5-48AA-8232-AE22745E2DC6.png

如果你的類里沒有圖片、xib和其他資源那可以到此為止了,如果有,就需要進行下面的操作,生成bundle文件夾

未完待續(xù)......

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

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

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