最近整理了部分文件,封裝了一些比較實用的文件庫順便整理出framework的含義,以及打包過程
什么是庫
庫是共享程序代碼的一種方式,一般分為<u>靜態(tài)和動態(tài)</u>
動態(tài)庫和靜態(tài)庫的區(qū)別
靜態(tài)庫:鏈接完整的拷貝在執(zhí)行文件中
動態(tài)庫: 運(yùn)行的時候就加載到內(nèi)存中,供程序使用,系統(tǒng)只調(diào)用一次,多個程序調(diào)用,節(jié)省內(nèi)存。
iOS靜態(tài)庫
.a 和 .framework
iOS動態(tài)庫形式
.dylib 和 .framework
面試題: framework 是靜態(tài)庫嗎?
系統(tǒng)的framework 是動態(tài)庫 我們打包的是靜態(tài)庫
為什么要使用靜態(tài)庫
lz 是為了實現(xiàn)模塊化,固定的業(yè)務(wù)轉(zhuǎn)成靜態(tài)庫,還能分享代碼,但是又不讓別人看你的代碼實現(xiàn)(其實是寫別人不能改的代碼, 哈哈)。
不廢話 直接將過程
1、打開Xcode,新建工程。
選擇 create framework & library
選擇 framework
2.創(chuàng)建我們所需要的文件類,比如繼承與NSobject 的testH 類
3、實現(xiàn)功能。
在新創(chuàng)建的類里面聲明方法并實現(xiàn)。這里我寫一個sayHello的方法,以便后面測試使用。
4、更改參數(shù)
在TARGETS下選中工程,在Build Settings下更改幾個參數(shù)
在Architectures下增加armv7s,并選中。將Build Active Architecture Only 設(shè)置為NO。
5、設(shè)置Headers
將你要公開的頭文件拖至Public下,要隱藏的放在Private或者Project下,當(dāng)然,隱藏的頭文件就無法再被引用。
6、打包Framework
1.選中模擬器,編譯程序
2.選中測試機(jī),編譯程序
3.在finder中找到framework文件
找到下圖中所示的Test文件,一個是Debug-iphoneos(真機(jī))下的,一個是Debug-iphonesimulator(模擬器)下的。
4.通過終端命令將兩個framework合為一個模擬器和真機(jī)都可使用的framework。
終端代碼未: <u>lipo -create</u> /Users/chenjiazhen/Library/Developer/Xcode/DerivedData/CharTest-dxlrsuvcbsfyohedbbfitrvbqygx/Build/Products/Debug-iphoneos/CharTest.framework/CharTest /Users/chenjiazhen/Library/Developer/Xcode/DerivedData/CharTest-dxlrsuvcbsfyohedbbfitrvbqygx/Build/Products/Debug-iphonesimulator/CharTest.framework/CharTest -output /Users/chenjiazhen/Desktop/frameWork
加黑加粗 代表的是第一個使用手機(jī)打出的frameworkTest 路徑 斜體代表的是模擬器文件的路徑
-output 代表導(dǎo)出的 后面的路徑是文件夾
然后 會生成一個.lipo文件
此時 修改后綴.framework 即可生成我們需要的framework包