1.創(chuàng)建一個(gè)靜態(tài)庫 Cocoa Touch Static Library
2.創(chuàng)建一對.h和.m的文件闺魏,并且聲明實(shí)現(xiàn)一個(gè)將要被他人調(diào)用的方法。(方法很low片拍,不過只是用做實(shí)驗(yàn)而已箫老。。逞怨。)
在我們生成.a靜態(tài)庫之前者疤,可以發(fā)現(xiàn)工程目錄中的Products文件中存在一個(gè)紅色的libstatic_test.a靜態(tài)庫小腊,這表示我們還未生成一個(gè).a靜態(tài)庫吧慢。
當(dāng)我們完成對聲明方法的實(shí)現(xiàn)后,按下command + B構(gòu)建我們的項(xiàng)目笆制,這時(shí)會發(fā)現(xiàn)原本紅色的libstatic_test.a的靜態(tài)庫變?yōu)楹谏悖@表示現(xiàn)在我們已經(jīng)生成了一個(gè)我們想要的.a靜態(tài)庫糯累,我們可以在電腦中找到靜態(tài)庫的位置。
通過圖-5我們可以看到生成的靜態(tài)庫册踩,但是并不存在對外公開可調(diào)用方法的.h文件泳姐,這顯然是不行的。添加用于顯示可調(diào)用方法的.h文件暂吉,可以選中工程的TARGETS—->Build Phases——>Copy Files胖秒,點(diǎn)擊圖-6中箭頭所示“+”,彈出一個(gè)框慕的,如圖-7阎肝,選中tool.h文件,點(diǎn)擊添加肮街,就會在.a靜態(tài)庫的文件目錄中新增一個(gè)包含tool.h的文件风题,如圖-8
但是到目前為止,我們可以通過終端命令行來查看制作的.a靜態(tài)庫所支持的架構(gòu)嫉父。
1.進(jìn)入靜態(tài)庫所在文件目錄沛硅;cd +'路徑'
2.lipo -info +'靜態(tài)庫名稱'
由圖-9可看出我們剛剛制作的靜態(tài)庫所支持的架構(gòu)是x86_64。
但是我們依然并沒有完成對.a靜態(tài)庫的制作绕辖,我們通過圖-4稽鞭,可以看出我們是在模擬器 iphone7下構(gòu)建的,當(dāng)引入當(dāng)前靜態(tài)庫的工程使用iphone4s模擬器時(shí)引镊,運(yùn)行會報(bào)錯(cuò)朦蕴。這是因?yàn)樵趇OS中篮条,模擬器ipone 5s之前,運(yùn)用的i386架構(gòu)吩抓,但是5s之后運(yùn)用的是x86_64框架涉茧,而我們之前制作的.a靜態(tài)庫是在iphone7模擬器下創(chuàng)建的,存在不兼容問題疹娶,如圖-10伴栓,
面對這種問題我們的解決方案是:選中制作靜態(tài)庫的工程static_test的TARGETS-->Bulid Setting-->Architectures-->Bulid Active Architecture Only 修改Debug中的默認(rèn)值YES為NO,如圖-11,command+B重新構(gòu)建雨饺。
好了钳垮,到目前為止,我們所制作的.a靜態(tài)庫就兼容i386和x86_64兩種架構(gòu)了额港,而真機(jī)同理即可支持arm64饺窿,armv7.armv7s。但是如果我們在真機(jī)上運(yùn)用模擬器下制作的.a靜態(tài)庫移斩,或者在模擬器下運(yùn)用真機(jī)制作的.a靜態(tài)庫肚医,又會出現(xiàn)兼容錯(cuò)誤,解決方法是:合并模擬器和真機(jī)制作的.a靜態(tài)庫為一個(gè)新的靜態(tài)庫向瓷。具體操作如下:
1.進(jìn)入兩個(gè)靜態(tài)庫所在文件目錄肠套;cd +'路徑'
2.lipo -create Debug-iphoneos/libstatic_test.a ?Debug-iphonesimulator/libstatic_test.a ?-output libtool.a
這樣就生成一個(gè)libtool.a的靜態(tài)庫,用這個(gè)靜態(tài)庫替換到之前我們在工程用的舊靜態(tài)庫猖任,編譯運(yùn)行你稚,這是就不會出現(xiàn)架構(gòu)兼容問題了。我們可以使用終端查看這個(gè)靜態(tài)庫所支持的架構(gòu)已經(jīng)兼容了模擬器和真機(jī)朱躺。如圖-12:
到目前為止刁赖,制作.a靜態(tài)庫就算完成了。