1. 程式人生 > >ios開發靜態庫生成

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 、資原始檔拖拽到其他專案中即可