關(guān)于 ios - 靜態(tài)庫的打造

iOS 靜態(tài)庫? :閉源庫

不公開源代碼,只公開調(diào)用的接口,看不到具體的實現(xiàn),是一個編譯后的二進(jìn)制文件。這種常見于一些公司的SDK包,比如高德地圖SDK、環(huán)信即時通訊SDK等等。而閉源庫又分為兩類:靜態(tài)庫和動態(tài)庫。本篇重點要講的便是其中的靜態(tài)庫。

靜態(tài)庫 和 動態(tài)庫的存在形式的區(qū)別

靜態(tài)庫 :.a 文件以及.framework ?在使用過程中 如果多個文件引用 會被創(chuàng)建多份在內(nèi)存中。

動態(tài)庫:.dylib文件以及.framework ?在使用過程中動態(tài)使用,內(nèi)存中只存在一份,可被多次引用。

打包靜態(tài)庫:.a 文件靜態(tài)打包?


創(chuàng)建一個demo ?,隨意創(chuàng)建一個方法 進(jìn)行測試 打包

在創(chuàng)建靜態(tài)庫的過程中我們可以創(chuàng)建在模擬機(jī)上運行的靜態(tài)庫,也可以創(chuàng)建在真機(jī)上運行的靜態(tài)庫 。

生成方法分別選中模擬機(jī) 以及真機(jī)進(jìn)行項目編譯(command+b),編譯之前下圖中的.a文件是紅色的,編譯生成之后會變成黑色,此時就證明我們的靜態(tài)庫生成成功??梢詓how in finder 進(jìn)行查看

當(dāng)然,創(chuàng)建的靜態(tài)庫文件是給別人拿來用的 ,然而此時外部人員是不知道我們的入口在哪,那么 我們需要下圖操作,將我們的. h文件 放開。

到此我們的靜態(tài)庫生成完畢。

在使用過程中 可能會遇到 如下錯誤 ,此錯誤表明 我們的靜態(tài)庫是不支持某些架構(gòu)的 (模擬機(jī)以及真機(jī)等的架構(gòu) 此處不再贅述)

進(jìn)行如下圖操作,可以解決上述問題 ?進(jìn)行完此操作之后 我們再次運行項目 ?。


注:靜態(tài)庫 因為真機(jī)和模擬機(jī) 以及debug 和release 等模式可以分為不用的 靜態(tài)庫 ?,我們可以執(zhí)行終端命令 進(jìn)行合并(此處解決靜態(tài)庫在真機(jī)和模擬機(jī)分別 的靜態(tài)庫的不匹配),但是此操作會增大文件,在上線的時候還是選擇相應(yīng)的 靜態(tài)庫


時間倉促,寫的比較潦草 ? 后期再進(jìn)行內(nèi)容填充。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容