ios開發靜態庫生成
首先簡單說下哈: 庫就是程式程式碼的集合,是共享程式碼的一種方式
分為開源庫(sd,mi,afn)和閉源庫(看不到具體實現的)
閉源庫分為靜態庫和動態庫
靜態庫: .a 和 .framework
動態庫: .dylib 和 .framework
靜態庫和動態庫在使用上的區別
靜態庫:連結時,靜態庫會被完整地複製到可執行檔案中, 被多次使用就有多份冗餘拷貝
動態庫:連結時不復制,程式執行時由系統動態載入到記憶體,供程式呼叫,系統只加載一次,多個程式共用,節省記憶體
注意啦: 使用自己製作的動態庫無法上傳appstore
接下來講講製作.a的方法
第一步: 新建一個工程選擇如下:
之後下一步啦新建工程。
開啟工程後幹掉聲稱的.h 和.m檔案如下
第二部:把需要封裝的類拖到工程中來
然後選擇需要暴露出來的 .h 檔案, .m 檔案會自動編譯到 .a 檔案中
選擇真機裝置,然後 Command+B 編譯, libMJRefresh.a 檔案從紅色變為黑色
就成功了, show in finder 就是需要的庫啦。
這裡需要注意的是: 選擇 真機執行的出來的是 真機執行需要的.a檔案, 只能執行在真機上, 跑模擬器就會報錯。
因為手機的cpu架構和電腦的不同造成的。。
解決方法:
合併真機command +B出來的.a 和模擬器command +B出來的.a
合併靜態庫讓模擬器和真機都能用的招
lipo -create /Users/gti/Desktop/Debug-iphoneos/libJTK.a /Users/gti/Desktop/Debug-iphonesimulator/libJTK.a -output /Users/gti/Desktop/libJTK.a
lipo -create :固定的命令
/Users/gti/Desktop/Debug-iphoneos/libJTK.a 真機跑出來的.a檔案的位置 這位置選中.a 檔案直接拖到終端就ok
/Users/gti/Desktop/Debug-iphonesimulator/libJTK.a 模擬器跑出來的.a檔案的位置
output 固定命令列
/Users/gti/Desktop/libJTK.a 合併ok 的最終檔案的位置以及名字
使用 .a
如何使用 .a
直接將 .a 、 .h 、資原始檔拖拽到其他專案中即可