iOS 靜態庫 - 制作靜態庫

前言


不論是個人開發還是團隊開發,隨著經驗的積累,會有一套屬于自己的類和工具函數。在團隊開發中,每個成員都會有自己習慣的屬于自己的類和工具,如果不能進行整合利用,一個項目中會存在許多重復的工具函數和類別,所以整合成為一個受到大家認可的工具集尤為重要。當開啟一個新項目時,你肯定會發現許多之前項目中用到過的方法,重用代碼的最簡單方法是copy,但是這種方式會對維護造成極大的阻礙,你很難保證共用文件在所有項目之間的同步升級。這時靜態庫就閃亮登場了,一個靜態庫是由若干個類,函數,定義和資源的包裝,將私密內容打包成靜態庫,別人只能調用接口,而不能知道其中實現的細節,你可以將其打包并在項目之間共享。


制作靜態庫


1.開一個新項目,創建靜態庫

Create Static Library

2.將你需要打包的文件拖入項目。(此處無圖)

此處需要注意的是:如果你在靜態庫工程中使用了Category,那么你可能會碰到鏈接問題。解決方法:

*? 方法1:在生成靜態庫的工程和使用靜態庫的工程中使用“-all_load”編譯選項,即在“Other Linker Flags”選項添加“-all_load”。(Build Settings)

Other Linker Flags設置

*? 方法2:在Category的.M文件中,聲明一個虛擬類。(推薦)

在Category的.M文件中創建一個虛擬類

3.配置你的靜態庫

*? 配置靜態庫的Deployment Target(Build Settings)

配置Deployment Target

*? 配置需要暴露的頭文件(Build Phases - Copy File)

配置需要暴露的頭文件

*? 配置靜態庫的architecture版本(Build Settings - Build Active Architecture Only)

配置靜態庫的architecture版本

注意:"Build Active Architecture Only" 設置為”NO” (設置為NO會編譯所有版本,否則只編譯當前的architecture版本)

在進行以上配置之后,就可以滿足大多數靜態庫的需求了,打包走起!

4.編譯生成靜態庫.a文件

1)分別選擇真機和Iphone6模擬器進行編譯,這是你可以看到項目文件夾中Products里面的.a文件生成了,然后右鍵Show In Finder

生產.a文件

2)可以看到在文件夾中生成了對應的模擬器.a以及真機.a,以及需要暴露的頭文件。

查看文件夾中的.a文件

3)合并.a文件

使用終端進行合成操作 lipo -create (真機.a路徑) (模擬器.a路徑) -output 保存路徑/(文件名).a

合并.a文件

成功之后新生成的.a文件就可以使用啦?。。?/p>

新生成的.a文件

5.使用靜態庫

將.h以及合成的通用版.a文件導入測試工程中,實現.h提供的接口


福利


既然你堅持看到這里?。?!不得不送你一個宏作為感謝,幫助你在Category中快速創建虛擬類

#ifndef FIX_CATEGORY_BUG

#define FIX_CATEGORY_BUG(_name_) \

@interface FIX_CATEGORY_BUG ## _name_ : NSObject? @end\

@implementation FIX_CATEGORY_BUG ## _name_? @end

#endif


目前iOS設備對應的CPU架構了列表:iOS設備的CPU架構

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

推薦閱讀更多精彩內容