iOS開發之靜態庫

2021-07-12 02:23:00 字數 1628 閱讀 3404

最近在與第三方支付平台對接的時候,接過來的文件demo裡含有.a靜態庫檔案,但是因為庫包出錯,需要修改,才發現.a靜態庫檔案不可修改,所以上網進行了了解學習。

現在跟大家分享一下學習的心得。

framework

檔案和.a

檔案都是庫檔案

, 那什麼是庫檔案

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

. 根據源**的公開情況,庫可以分為

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 檔案

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

在終端輸入指令

lipo -create debug-iphoneos/libmjrefresh.a debug-iphonesimulator/libmjrefresh.a -output libmjrefresh.a

.a 檔案的體積(一般情況下) 通過

lipo –info libmjrefresh.a 

可以檢視

.a 的型別(模擬器還是真機)

使用.a

如何使用.a

直接將.a 

、.h 

、資源檔案拖拽到其他專案中即可

iOS開發之靜態庫的製作

當你需要和別人分享 但又不想讓別人看到你內部的實現時就需要製作靜態庫,通常用於第三方sdk 下面就分享一下製作靜態庫 a 的過程 1 開啟xcode,新建workspace 2 隨便給workspace取個名字 3 在workspace新建工程 4 選擇靜態庫 5 點選下一步 6 刪除系統自動幫你生...

ios開發靜態庫生成

首先簡單說下哈 庫就是程式 的集合,是共享 的一種方式 分為開源庫 sd,mi,afn 和閉源庫 看不到具體實現的 閉源庫分為靜態庫和動態庫 靜態庫 a 和 framework 動態庫 dylib 和 framework 靜態庫 鏈結時,靜態庫會被完整地複製到可執行檔案中,被多次使用就有多份冗餘拷貝...

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

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