全面了解 iOS 靜態庫開發

2021-07-05 07:04:56 字數 1734 閱讀 2239

**全面了解 ios 靜態庫開發 1、

全面了解 ios 靜態庫開發

1)、靜態庫和動態庫:

字尾不一樣,前者是.a,後者是.dylib;

載入方式不一樣,前者在鏈結時被複製到可執行**,可以存在多份,後者是執行時被載入到記憶體,只會存在乙份;

2)、打包debug版靜態庫,分為給模擬器使用還是真機使用,還分為是debug版,還是release版

不同之處是:

模擬器:

真機:debug(除錯)版本

含完整的符號資訊,以方便除錯

不會對**進行優化

release(發布)版本

不會包含完整的符號資訊

的執行**是進行過優化的

的大小會比debug版本的略小

在執行速度方面,release版本會更快些(但不意味著會有顯著的提公升)

無編譯錯誤後,

選擇模擬器還是真機,

直接build,就可以生成.a了。

原來打包.a好簡單!

不過也不是這麼簡單,上面看出,不管模擬器還是真機,都需要支援多種cpu架構,不然在不支援的裝置上會crash:

non-fat file: libbcpulltorefreshtableview.a is architecture: arm64

怎麼解決呢?

把開關變成no,就可以了:

architectures in the fat file: libbcpulltorefreshtableview.a are: armv7 arm64 

3)、如何實現真機和模擬器兩個.a結合?

合併好壞:

合併產生新的靜態庫:

--> lipo -create debug-iphoneos/***.a debug-iphonesimulator/***.a -output ***.a

合併產生新的靜態庫:

4)、製作release版的靜態庫

跟debug版步驟一樣,只不過在編譯時,改下面的選項即可

5)、製作framework版本的靜態庫

選擇framework

編譯時,預設製作成動態庫,要在下面選擇(因為framework預設是製作成動態庫的)

合併靜態庫時,是選.framework檔案裡的libstaticlib檔案

合併:刪除libstaticlib,libcalculatetool拉入libstaticlib.framework專案中,libstaticlib.framework靜態庫製作完成

iOS開發之靜態庫

最近在與第三方支付平台對接的時候,接過來的文件demo裡含有.a靜態庫檔案,但是因為庫包出錯,需要修改,才發現.a靜態庫檔案不可修改,所以上網進行了了解學習。現在跟大家分享一下學習的心得。framework 檔案和.a 檔案都是庫檔案 那什麼是庫檔案 庫是程式 的集合,是共享程式 的一種方式 根據源...

ios開發靜態庫生成

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

iOS開發之靜態庫的製作

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