1、需求
? ? ?我們在開發(fā)iOS的工作中可能會自己開發(fā)一些.a靜態(tài)庫或者打包一下別人的第三方類庫包裝成自己的.a文件。有時候我們引入一些C++編譯的第三方文件時可能會出現(xiàn)編譯的錯誤,但是我們?nèi)绻虬?a靜態(tài)庫時就很少會出現(xiàn)OC與C++混編的錯誤,原因很簡單.a靜態(tài)庫文件是編譯好的二進制文件,二進制文件與二進制文件互相混編當然沒有什么問題。好那么接下來我們開始學習打包吧!
2、實例
?接下來就以我項目中使用第三方登錄的SDK打成靜態(tài)庫為實例。
?1>我們需要準備好需要打包的文件


2>接下來我們開始新建一個工程文件取名KSLogin
3>接下來我們把準備好的AFNetworking拖入工程中,注意文件放在一級目錄下。

4>接下來我們選擇出來需要暴露出來的頭文件

5>接下來我們配置下工程文件


6>配置完之后我們就可以選擇真機進行運行在運行后我們找到生成的.a文件右鍵選擇show in finder就可以了。

7.此時生成的.a文件只適用于真機,如果我們需要模擬器可以使用的.a文件用同樣的方法在模擬器上運行下就可以了,而且網(wǎng)上有很多教程可以合并兩個.a文件在這里就不進行重述了。
注意點:
如果打的靜態(tài)庫需要引入系統(tǒng)的庫文件,比如當前的項目引入了libxml2.2.dylib,而系統(tǒng)庫中只存在libxml2.2.tbd,操作如下:
先引入該庫:選中可以看到文件信息

通過上面的路徑/usr/lib/libxml2.2.dylib,點擊add other

然后shift + command + G,輸入地址:

選中l(wèi)ibxml2.2.dylib ?open 導入即可
如何合并靜態(tài)庫文件:展示.a文件支持的架構(gòu) ? ?lipo -info .a文件
合并:lipo -create xxx.a yyy.a -output zzz.a
以上文檔參考來源:.a靜態(tài)庫制作參考資料