靜態庫
1.庫的分類:1開源庫,可以看見源代碼.m文件2閉源庫
2.靜態庫存在形式:1.a/.framework
3.動態庫的存在形式:1.dylib/.framework
4,靜態庫和動態庫的區別:
-1.靜態庫在連接時,會被完整的復制到可執行文件中,被多次使用就有多分拷貝
-2.動態庫不會復制,只有一份,程序運行時動態加載到內存,系統只加載一次,多個程序公用.節省內存
-3.動態庫不允許上架,但是wwdc2014上蘋果開放動態加載dylib的接口,開放了動態庫掛在(插件式開發)
-4.將MRC項目打包成靜態庫,可以在ARC環境下直接使用,不需要轉換
靜態庫的制作
1.創建項目時,直接選擇靜態庫
Snip20160815_4.png
2.創建文件,將.h文件暴露出來
Snip20160815_5.png
3.不同cpu環境下,對應不同的靜態庫架構
-模擬器:4s-5 :i386/ 5s-6splus :x86_64
-真機:3s-4s:armv7/ 5-5c:armv7s/ 5s-6splus:arm64
4.獲取靜態庫支持的架構信息
-1.打開終端,lipo -info .a文件路徑,可以獲取靜態庫對應的支持架構
-2.支持多個架構
Snip20160815_6.png
5.支持真機架構
-1.將運行的模擬器改成真機站位,編譯,生成可以運行在真機架構下的靜態庫
6.Release版本和Debug版本
-1.調試版本直接通過編譯來獲取Debug版本的靜態庫
-2.Debug模式下,有調試信息,Release模式下,沒有調試信息
-3.Release版本,直接調整到Release模式下編譯
7.靜態庫的合并
-1.`cd`文件
-2.`lipo -create Release/Debug版本下的支持模擬器的.a靜態庫路徑 Release/Debug版本下支持真機調試下的.a文件路徑 -output 文件名.a`
-3.生成一個支持Release/Debug版本下支持模擬器和真機的.a靜態庫
.framework(靜態和動態)的制作和使用
1.暴露頭文件
Snip20160815_7.png
2.監測.frameword的支持的架構lipo info framework文件路徑
3.支持多個架構,和.a靜態庫文件支持多個架構一致
4.合并模擬器和真機版本下的.framework和合并.a靜態庫一致lipo -create 路徑 路徑 -output 文件名
-注意,文件路徑不是指.framework文件的路徑,而是.framework包中生成的文件路徑
Snip20160815_21.png
5.使用.framework報錯image not found
,因為該.framwork不能確定是靜態庫還是動態庫
6.解決:
1..framework(動態庫的使用)
Snip20160815_8.png
2..framework(靜態庫的使用)
Snip20160815_10.png
靜態庫的制作與調試
1.創建新工程,在工程中創建靜態庫并添加
Snip20160815_16.png
2.在工程中導入靜態庫暴露的頭文件
3.編譯直接報錯
Snip20160815_17.png
4.報錯原因需要添加依賴工程
Snip20160815_18.png
5.連接靜態庫,對添加的靜態庫進行編譯
Snip20160815_20.png
barryhippo的原創