iOS如何生成.a文件

  • 首先來談談為何要使用.a文件 Objective-c語言有.h .m 文件組成。靜態庫可以將 .m文件封裝成一個.a文件,第三方應用程序只需要拿到這個.a文件和代碼對應的.h文件即可使用靜態庫中封裝的方法。IOS靜態庫適合去制作第三方提供的SDK。

第一步

1.首先創建一個新的工程,選擇Framework
&:,在選擇Cocoa Touch Static Library 工程名自己定義


BB2ECA5B-8795-4ECA-88AF-D2FB0F8BA382.png

2.接下來你會看到自動生成.h和.m文件 可以在.m文件中寫你要的代碼


F1898D4B-A084-488B-8170-A8DE5682136B.png

3.我們來創建一個簡單的代碼
.h文件如下
D8EE5B3D-A2B4-4CFC-AF6D-1B31CB1BE250.png

.m文件如下

1560D4FD-1030-4643-AA44-7070C028D2D3.png

4.接下來就是編譯生成.a文件了
快捷鍵(command+B)選中真機編譯和選中模擬機編譯對應生成的連個.a文件一個是真機的一個是模擬機的


5AB668DE-A882-4EA5-B3AA-F7C67FB650B7.png

這時候去資源庫里查找編譯生成的.a文件
找到 前往 然后 按著 option 快捷鍵 你會看到 資源庫 點擊 如圖

![998F053B-CD9A-455C-8B88-CF0A72B7C8B7.png](http://upload-images.jianshu.io/upload_images/453803-64294d59ed8e0c36.png)

看到Release-iphoneos 和Release-iphonesimulator 里邊的.a文件


5AB668DE-A882-4EA5-B3AA-F7C67FB650B7.png

4.接下來就是將你生成的.a文件引入到你想加入的工程中

4FF87073-D14F-4D6D-964A-78A59B155743.png

引入方法:直接將上圖你所看到的include文件夾中所有的.h文件和下邊對應的.a文件直接拖到你的工程中 千萬注意下圖中的三個選項勾選
FB518732-A5E0-419E-8A92-8B07803A83C4.png

D5B5F50F-5A90-48C1-B669-DE1F8E5B740B.png

5.添加成功后就可以直接使用了 但是需要注意的是 如果你是選擇模擬器編譯生成的.a文件那么在真機運行的時候是會報錯的 所以為了可以使用真機和模擬器都可以使用.a文件可以合并成為一個.a文件 使用終端合成具體方法如下:
ZXYdeMacBook-Pro:~zxy$ **lipo -create ** /所在路徑/Debug-iphoneos/libGenerateFaile.a /所在路徑/
Debug-iphonesimulator/libGenerateFaile.a -output /Users/zxy/Desktop/libUniversal.a
這樣,就可以合并成一個通用的靜態庫,唯一的缺點是體積要大一點相對于真機和模擬器兩個的總大小 之后將這個靜態庫拖到工程中即可

------------分割線------
由于看到各位提出的問題在iphones 4s 和iphone 5上無法使用的問題后來查閱各種資料找到答案如下:
原因是因為靜態庫少了4S~5:i386 對應的cpu架構
如下圖所示:
在 cd 到資源庫你的.a 文件所在的路徑 然后使用如下命令查看:
lipo - infor ***.a
顯示的結果如下圖

3EF5E4D6-69FC-4E68-A64D-DF8A93F5EE45.png

只需要到你們的.a工程中找到如下圖的Debug 將Yes 改成NO即可 然后重新 commond + B 進行重新編譯 選擇所有的模擬器進行編譯 好了 之后再接著你上班的步驟重新愉快的來一遍問題就ok了!!!

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

推薦閱讀更多精彩內容