前言:
做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 ...