iOS靜態庫的制作

首先 我們要知道 庫 主要分為兩種 一個 是靜態庫,一個是動態庫。

下面是他們表現形式
靜態庫: .a 和 .framework
動態庫: .dylib 和 .framework

靜態庫和動態庫在使用上的區別
靜態庫:鏈接時,靜態庫會被完整地復制到可執行文件中, 被多次使用就有多份冗余拷貝
動態庫:鏈接時不復制,程序運行時由系統動態加載到內存,供程序調用,系統只加載一次,多個程序共用,節省內存

如何制作.a 靜態庫 其實這個和寫工具類是一個意思。

步驟一 首先新建一個靜態庫的工程

Paste_Image.png

步驟二 新建完之后我們會發現其實他和繼承NSObjc 其實是一個實現罷了,個人認為 唯一的就是 打包后不能看到m 實現的內容。

Paste_Image.png

步驟三

我們在.h .m 文件中寫點內容 和正常寫方法一樣
寫完之后 我們要注意一點 若文件多,需要指定暴露在外界的.h 看如下設置

targets -- Build Phases -- 點擊左上方加號 --New Headers Phase

Paste_Image.png

添加完后我們會看到

Paste_Image.png

把我們的需要暴露的h 文件添加上即可。 根據需要放到適當的位置

Paste_Image.png

步驟四

好了,以上內容都完工了,最后我們可以打包了,

打包前 .a 文件是紅色的

Paste_Image.png

打包后會變成黑色
如何打包呢?
command + B 即可

狀態 分成releaseDeBug真機模擬器
在打包的時候我們根據自己需要的狀態去打包即可。

打包我們如何找到.a
很簡單,
在項目中右鍵 -- show in Finder -- 到達目錄

最后需要說一下的是 合并 模擬器 真機的靜態庫

拿DeBug 的真機和模擬器 示范

先將 這個兩個放在同一個目錄下

cd xxx/xx

執行命令

lipo -create Debug-iphoneos/libMJRefresh.a Debug-iphonesimulator/libMJRefresh.a -output libMJRefresh.a

分析:Debug-iphoneos/libMJRefresh.a 為真機sdk 的路徑
Debug-iphonesimulator/libMJRefresh.a 為模擬器的路徑
-output libMJRefresh.a 合并的靜態庫

制作及合并過程已經全部完畢
開始使用第一個靜態庫吧。。。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容