IOS 靜態庫的製作

iOS 開發中經常使用到第三方 SDK,經常是打包成 .a 文件,我們稱之爲靜態庫,所以自然也就有了動態庫. 

靜態庫  一般以 .a 或 .framework 結尾   動態庫  以.dylib 和 .framework結尾靜態庫:鏈接時,靜態庫會被完整地複製到可執行文件中, 被多次使用就有多份冗餘拷貝. 動態庫:鏈接時不復制,程序運行時由系統動態加載到內存,供程序調用,系統只加載一次,多個程序共用,節省內存.但項目中如果使用了自制的動態庫,不能被上傳到 AppStore.蘋果只能使用其提供的動態庫.


如何製作靜態庫?

           1. 創建一個工程


           




 2.新創建工程



3. 刪除系統創建的 staticLibTest.h 和 staticLibTest.m 文件,導入自己想要打包的文件.  eg: YAdchiveTest1.h






4.可以看到此時的 libStaticLibTest.a 文件是紅色的, 選擇 IOS Device , command + B 編譯.





5.編譯完成  libStaticLibTest.a 文件 由紅色變爲色.此時說明真機版的 .a 文件打包完成. 打包之前可在如下圖位置選擇需要暴露出來的頭文件.





6. 生成模擬器運行的 .a 文件.選擇模擬器. command + B 編譯.此時可生成模擬器對應的 .a 文件. 注意: 運行在哪個模擬器上生成的 .a 文件就只能運行在其對應的 cpu 架構上.
    cpu 架構 : iPhone 4s  之前: i386   5 之後是 x86_64.  要想生成通用的 .a 文件,如下圖設置,把 YES --> NO. command + B 運行.





7. 右鍵 工程下的 Products 文件夾下的 .a 文件 --> show inFinder.則可以看到剛纔編譯的兩個文件. Debug-iphoneos 爲真機的, Debug-iphonesimulator 爲模擬器的.

 



8. 打開終端. 進入到 Debug-iphoneos 的上級目錄,cd xxxx  .進入到文件夾後 輸入 : lipo -info + .a文件路徑.即可查看對應.a 文件所支持的 cpu 架構. 如下圖.



9. 爲了在模擬器和真機上同一個 .a 文件都可以運行,避免真機和模擬器導入兩個.a 文件,可以將模擬器和真機的兩個 .a 文件合爲一個文件.
   
    終端鍵入命令: lipo  -create  真機.a絕對路徑 模擬器.a 絕對路徑  -output/Users/電腦名/Desktop/xxxx.a    合成文件存放桌面




10. 測試   new  一個新工程,導入 .a 以及生成 .a 是的文件中的 .h 文件







11. 在 appDelegate 中運行如下






    至此,一個靜態庫的基本製作就完成了.





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章