IOS靜態庫(SDK)製作及使用方法

2021-07-25 09:24:33 字數 2950 閱讀 9855

前言:

做ios開發經常會碰到各類的sdk,其中我們經常看到類似***.a的檔案。這個就是封裝好的庫檔案,那麼它是如何製作出來的?又發何使用呢?

知識點:

一、庫

所謂庫,就是封裝好的程式**。其中又分為開源庫和閉源庫。

開源庫就是公開源**,能看到**的具體細節,可修改。例如:sdwebimage、afnetworking等。閉源庫就是不公開源**,無法看到源**,不可修改,只能使用。閉源庫又分:靜態庫、動態庫

(1)     靜態庫

.a和.framework形式存在。

(2)     動態庫

.dylib和.framework形式存在。

使用區分:

靜態庫在鏈結時就會被完整地複製到可執行檔案,多次使用就多次複製,造成**冗餘

動態庫在鏈結時不會進行複製,而是由程式執行時系統動態載入到記憶體,供程式呼叫,只載入一次,節省記憶體

注意:專案中若有自製動態庫,不能被上傳到。

製作過程:

1:建立專案,如下圖所示

xcode建立工程,選擇ios下的famework&library其中選擇cocoa touch static library

2:專案結構如下圖所示

這時我們好像已經看到了乙個libtestlib.a的檔案,為什麼是紅色的呢?這就做好了嗎?當然沒有製作好了,紅色是因為沒有進行編譯。

3:**功能實現

新增相應的功能**;

這裡注意.h檔案中也要寫好方法定義。如下圖所示

4:工程配置

確保所需**新增到編譯列表中。

5:編譯工程

確保工程,在release模式。

選擇edit scheme進行設定。

真機編譯設定,如下圖所示

模擬器編譯設定,如下圖所示

編譯(command+b)或如下圖所示

6:檔案合併

經過上面的編譯工作,我們發現libtestlib.a檔案變成了黑色。資料夾中檢視,如下圖:

release-iphoneos

資料夾裡面的東西是用在真機上的

release-iphonesimulator

資料夾裡面的東西是用在模擬器上的

將兩個資料夾複製到桌面新建資料夾tt中,開啟終端執行合併操作

合併**:

lipo –create/users/drb/desktop/tt/release-iphoneos/libtestlib.a /users/drb/desktop/tt/release-iphonesimulator/libtestlib.a  -output /users/drb/desktop/tt/testlib.a

檢視資訊**:

lipo -info/users/drb/desktop/tt/testlib.a

格式(注意空格):

lipo-create

真機下的

.a路徑(空格)

模擬器下的

.a路徑(空格)

-output

(空格)

合成後的路徑及名稱

檢視資訊時,如下圖所示內容很重要

到此靜態庫製作完成。

使用過程

1:如下圖所示,將製作好的testlib.a檔案和testlib.h檔案新增到工程中

新增呼叫**:

//靜態庫呼叫測試

testlib * testlib = [[testlib

alloc]init];

[testlib hellolib];

執行程式,我們會看到呼叫成功了! 輸出資訊:」hellolib test!」

iOS 使用靜態庫封裝sdk

很多專案中都要開發iphone和ipad版本,並且很多時候,只不過ui互動布局不一樣,資料層 完全可以重用。本人,這次封裝了資料層 做成靜態檔案,然後供iphone和ipad共同使用。1.ios靜態庫的製作參考 在寫 過程中,本人,喜歡使用sqlite資料庫,這樣,更好的提煉出來資料層 一般工程中會...

iOS 靜態庫製作方法

庫是程式 的集合,是共享程式 的一種方式 根據源 的公開情況,庫可以分為 2 種型別 公開源 能看到具體實現 比如 sdwebimage afnetworking 不公開源 是經過編譯後的二進位制檔案,看不到具體實現 主要分為 靜態庫 動態庫 靜態庫 a 和 framework 動態庫 dylib ...

iOS靜態庫 framework的製作

frameworke靜態庫的製作 1 先建立乙個新的xcode工程libtest,需要選擇下面這個模板 建立完成後是這個樣子的 建立完成後我們可以看到,工程本身自帶乙個libtest.h檔案和乙個info.plist檔案。2 我們建立乙個類printstring,新增乙個單純列印字串的簡單方法 3 ...