iOS開發之靜態庫 a的製作教程

2021-06-29 06:46:54 字數 2002 閱讀 8415

簡介

什麼是庫?

庫是程式**的集合,是共享程式**的一種方式

根據源**的公開情況,庫可以分為 2 種型別

開源庫公開源**,能看到具體實現

比如 sdwebimage 、 afnetworking

閉源庫不公開源**,是經過編譯後的二進位制檔案,看不到具體實現

主要分為:靜態庫、動態庫

靜態庫和動態庫

靜態庫和動態庫的存在形式

靜態庫: .a 和 .framework

動態庫: .dylib 和 .framework

靜態庫和動態庫在使用上的區別

靜態庫:鏈結時,靜態庫會被完整地複製到可執行檔案中, 被多次使用就有多份冗餘拷貝 (左圖所示)

動態庫:鏈結時不複製,程式執行時由系統動態載入到記憶體,供程式呼叫,系統只載入一次,多個程式共用,節省記憶體 (右圖所示)

需要注意的是:

製作 .a

新建專案-> 選擇 「cocoa touch static library」

新增庫需要包含的源**

將李明杰老師的重新整理框架mjrefresh拖入工程

選擇需要暴露出來的 .h 檔案, .m 檔案會自動編譯到 .a 檔案中

選擇真機裝置,然後 command+b 編譯, libmjrefresh.a 檔案從紅色變為黑色

選擇模擬器,依然 command+b ,模擬器和真機環境下用的 .a 檔案是分開的

右擊 「show in finder」 ,檢視製作好的 .a 檔案

debug-iphoneos 資料夾裡面的東西是用在真機上的

debug-iphonesimulator 資料夾裡面的東西是用在模擬器上的

如果 scheme 是 release 模式,生成的資料夾就以 release 開頭

如果想讓乙個 .a 檔案能同時用在真機和模擬器上,需要進行合併

在終端輸入指令

lipo -create debug-iphoneos/libmjrefresh.a debug-iphonesimulator/libmjrefresh.a -output libmjrefresh.a
.a 檔案的體積(一般情況下)

真機用的 .a > 模擬器用的 .a

所合成 .a == 真機用的 .a + 模擬器用的 .a

通過 lipo –info libmjrefresh.a 可以檢視 .a 的型別(模擬器還是真機)

使用 .a

如何使用 .a

直接將 .a 、 .h 、資源檔案拖拽到其他專案中即可

iOS開發之靜態庫 a的製作教程

庫是程式 的集合,是共享程式 的一種方式 根據源 的公開情況,庫可以分為 2 種型別 公開源 能看到具體實現 比如 sdwebimage afnetworking 不公開源 是經過編譯後的二進位制檔案,看不到具體實現 主要分為 靜態庫 動態庫 靜態庫 a 和 framework 動態庫 dylib ...

iOS開發之靜態庫 a的製作教程

庫是程式 的集合,是共享程式 的一種方式 根據源 的公開情況,庫可以分為 2 種型別 公開源 能看到具體實現 比如 sdwebimage afnetworking 不公開源 是經過編譯後的二進位制檔案,看不到具體實現 主要分為 靜態庫 動態庫 靜態庫 a 和 framework 動態庫 dylib ...

iOS開發之靜態庫 a的製作教程

庫是程式 的集合,是共享程式 的一種方式 根據源 的公開情況,庫可以分為 2 種型別 公開源 能看到具體實現 比如 sdwebimage afnetworking 不公開源 是經過編譯後的二進位制檔案,看不到具體實現 主要分為 靜態庫 動態庫 靜態庫 a 和 framework 動態庫 dylib ...