iOS SDK的封裝(一)靜態(tài)庫(kù).a SDK文件的封裝和使用

前言

這幾年做的項(xiàng)目,基本都是封裝成SDK供第三方使用,在這里做個(gè)記錄,希望各位技術(shù)大牛多多指教,同時(shí)也希望可以給別人給予幫助和借鑒。

1 庫(kù)

1.1 什么是庫(kù)

庫(kù)是共享程序代碼的方式,一般分為動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)。

  • 靜態(tài)庫(kù):.a和.framework。鏈接時(shí),靜態(tài)庫(kù)會(huì)被完整的復(fù)制到可執(zhí)行文件中,被多次使用就又多份冗余拷貝。
  • 動(dòng)態(tài)庫(kù):.dylib和.framework。鏈接時(shí)不復(fù)制,程序運(yùn)行時(shí)由系統(tǒng)動(dòng)態(tài)加載到內(nèi)存,供程序調(diào)用,系統(tǒng)只會(huì)加載一次,多個(gè)程序共用,節(jié)省內(nèi)存。
1.2 區(qū)別
  • .a是一個(gè)純二進(jìn)制文件,.framework中除了有二進(jìn)制文件之外還有很多資源文件。
  • .a不能直接使用,至少要有.h文件配合,.framework文件可以直接使用。
  • .framework == .a + .h + sourceFile。
1.3 Debug和Release
  • Debug和Release,在我看來主要是針對(duì)其面向的目標(biāo)不同的而進(jìn)行區(qū)分的。
  • Debug通常稱為調(diào)試版本,通過一系列編譯選項(xiàng)的配合,編譯的結(jié)果通常包含調(diào)試信息,而且不做任何優(yōu)化,以為開發(fā)人員提供強(qiáng)大的應(yīng)用程序調(diào)試能力。
  • Release通常稱為發(fā)布版本,是為用戶使用的,一般客戶不允許在發(fā)布版本上進(jìn)行調(diào)試。所以不保存調(diào)試信息,同時(shí),它往往進(jìn)行了各種優(yōu)化,以期達(dá)到代碼最小和速度最優(yōu)。為用戶的使用提供便利

2 .a靜態(tài)庫(kù)(SDK)創(chuàng)建

2.1、打開Xcode創(chuàng)建一個(gè)新的工程,選擇工程如下:
image.png
2.2、工程創(chuàng)建后,配置參數(shù),配置支持系統(tǒng)的版本這個(gè)參數(shù),選擇TARGETS --> Build Settings --> iOS Deployment Target ,配置如下:
image.png
2.3、設(shè)置適配所有模擬器架構(gòu),TARGETS -> Build Settings -> Build Active Architecture Only 設(shè)為 NO;設(shè)置完成后,就可以同時(shí)支持所有模擬器。
image.png
2.4、創(chuàng)建一個(gè)工具類AtaticLibTool,添加方法用于測(cè)試。
image.png
2.5、公開接口頭文件,TARGETS --> Build Phases --> Copy Files,將需要公開的頭文件,直接將頭文件拖入即可;這里我們把新建的測(cè)試類AtaticLibTool.h公開供第三方使用。
image.png
2.6、編譯打包。
2.6.1 首先 Edit Scheme
image.png
2.6.2 設(shè)置Build Configuration ,根據(jù)使用情況選擇Debug或者Release。
image.png
2.6.3 選擇后,commamd + B 編譯,編譯完畢后,我們會(huì)看到工程中Products文件夾下的libAtaticLib.a文件由紅色變成了黑色。右鍵show in finder可以在其目錄下找到它。那就是我們打包好的.a靜態(tài)文件了;
image.png
image.png
2.7、右鍵show in finder可以在其目錄下找到.a文件,使用cmd命令,合并虛擬機(jī)和真機(jī)的lib文件,例如:lipo -create 模擬器lib路徑 真機(jī)lib路徑 -output /Users/username/Desktop/libAtaticLibTools.a;
image.png

3 .a文件(SDK)的使用

新建一個(gè)可運(yùn)行的工程,把頭文件和.a文件拖入項(xiàng)目測(cè)試,導(dǎo)入SDK頭文件即可使用.a文件中公開的方法。
image.png

4 完成.a文件(SDK)的創(chuàng)建和打包,靜態(tài)庫(kù)的使用已經(jīng)完成。

5 后記

本篇主要講述了一種.a SDK的生成和使用,感興趣的給個(gè)贊或者關(guān)注~~~
感興趣的可以看下面的文章
iOS SDK的封裝(二)靜態(tài)庫(kù).framework SDK文件的封裝和使用

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

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