1. 程式人生 > >iOS 打包靜態庫.a檔案

iOS 打包靜態庫.a檔案

製作.a

1、新建專案 –> Cocoa Touch Static Library
這裡寫圖片描述

2、新增庫需要包含的程式碼
這裡寫圖片描述

3、將需要暴露的.h檔案暴露出來,.m會自動編譯到.a檔案中
這裡寫圖片描述

4、分別選擇真機裝置和模擬器,command + B編譯,staticTest會從紅色變成黑色。真機和模擬器環境下用的.a檔案是分開的。
這裡寫圖片描述

5、在“Show in Finder ”,可以看到編譯生成的.a 和 暴露的.h檔案。
這裡寫圖片描述
這裡寫圖片描述

Note:
- Debug-iphoneos 資料夾裡面的東西是用在真機上的
- Debug-iphonesimulator 資料夾裡面的東西是用在模擬器上的
- 如果 Scheme 是 Release 模式,生成的資料夾就以 Release 開頭
除錯版本 VS 釋出版本


- 除錯版本會包含完整的符號資訊,以方便除錯
- 除錯版本不會對程式碼進行優化
- 釋出版本不會包含完整的符號資訊
- 釋出版本的執行程式碼是進行過優化的
- 釋出版本的大小會比除錯版本的略小
- 在執行速度方面,釋出版本會更快些,但不意味著會有顯著的提升

當我們需要打包的.a檔案裡面用到了圖片等資原始檔。此時我們不該直接把resource資料夾拖進專案,而是建立.bundle檔案,然後把圖片等資源放進.bundle裡面管理。
這裡寫圖片描述
這裡寫圖片描述
在其他專案中使用我們打包的.a檔案時,只需要將.a檔案和暴露的.h檔案以及資原始檔.bundle(有Xib時還需要拖Xib)拖進新專案即可使用。

  1. 如果想要使打包好的.a檔案能同時在模擬器和真機上使用,需要將兩個.a檔案進行合併。在終端輸入指令:
lipo -create ~/Debug-iphoneos/libstaticTest.a ~/Debug-iphonesimulator/libstaticTest.a -output ~/libstaticTest.a

即: lipo -create + 真機.a檔案路徑 + 模擬器.a檔案路徑 + -output + 合成.a檔案的路徑
PS:可以通過 lipo -info .a檔案路徑 指令檢視.a的型別

除錯.a

1、建立一個application工程,可以正常執行。
這裡寫圖片描述

2、此時我們需要在這個工程裡新增靜態庫進行除錯,點選targets下面的+號,新增libriary
這裡寫圖片描述
3、此時在工程裡面會出現靜態庫的資料夾,在此資料夾下面新增需要打包靜態庫的程式碼即可。
這裡寫圖片描述

4、使用靜態庫,只需要將需要暴露的標頭檔案引入project的類裡。同時需要配置targets -> build Phases 下的Target Dependencies 和Link Binary With Libraries 新增我們建立的靜態庫.a。
這裡寫圖片描述

5、打包靜態庫只需要選中靜態庫編譯即可。具體打包方法同上。
這裡寫圖片描述