首先寫這篇文章的目的是為了以后忘記怎么操作了可以來看下怎么去實(shí)現(xiàn)的蜘欲!
首先:
1,先創(chuàng)建framework,
2晌柬,進(jìn)入創(chuàng)建好的工程刪除掉自帶的.h頭文件
3姥份,添加所需文件
4,TARGETS —> Build Settings 中設(shè)置相關(guān)項(xiàng)
(1).Build Active Architecture Only 設(shè)置為NO的意思是當(dāng)前打包的.framework支持所有的設(shè)備.否則打包時(shí)只能用當(dāng)前版本的模擬器或真機(jī)運(yùn)行
(2).Build Setting 搜索linking 設(shè)置Dead Code Stripping 為NO是編譯選項(xiàng)優(yōu)化,包瘦身,(可不改) Mach-O Type 選中StaticLibrary (靜態(tài)庫(kù)) Xcode默認(rèn)是動(dòng)態(tài)庫(kù)
(3). 設(shè)置framework最低支持的版本
5空繁,TARGETS —> Build Phases
將需要呈現(xiàn)給來的頭文件,直接從Project拖到Public中. 不想呈現(xiàn)出來的.h文件不建議拖到Private中. 放在project中即可
6殿衰,在進(jìn)行編譯之前應(yīng)該設(shè)置為release模式
7,來到工程目錄盛泡,Products下的文件都是紅色的闷祥,現(xiàn)在我們選中.framework文件,分別真機(jī)和模擬器運(yùn)行一遍(成功運(yùn)行)傲诵,然后Show in Finder 找到對(duì)應(yīng)的 .framework文件(上級(jí)目錄可以看出是真機(jī)還是模擬器文件夾)真機(jī)和模擬器運(yùn)行成功的文件是在這倆個(gè)文件夾內(nèi)的
內(nèi)部分為Debug版本和Release版本凯砍,同時(shí)兩者有分為真機(jī)版本和模擬器版本framework(iphoneos后綴代表真機(jī)版本,iphonesimulator后綴代表模擬器
8拴竹,真機(jī)版本和模擬器版本framework合并
(1).查看架構(gòu)信息悟衩,打開終端使用命令行 lipo -info 查看framework架構(gòu)信息
真機(jī)版本如下:
模擬器如下:
(2)合并真機(jī)模擬器版本
因?yàn)橐陨汐@取的framework只能在對(duì)應(yīng)的版本上運(yùn)行(即真機(jī)只能在設(shè)備上運(yùn)行模擬器版本只能在模擬器上面運(yùn)行使用)所以需要合并為通用版本
命令行語句:sudo lipo -create (此處請(qǐng)?zhí)顚懻鏅C(jī)AppVest文件路徑) (此處填寫模擬器AppVest文件路徑) -output 自定義合成文件存儲(chǔ)路徑(合成文件的名字AppVest)
問題1:做合并操作的時(shí)候有可能會(huì)遇到一個(gè)問題,have the same architectures (arm64) and can't be in the same fat output file栓拜,就是真機(jī)和模擬器中都包含了arm64架構(gòu)座泳,這個(gè)地方要你去項(xiàng)目當(dāng)中設(shè)置一下就行了,截圖如下幕与,這一步的操作是去掉模擬器中的arm64挑势,
問題2:還有一種情況,報(bào)can't move temporary file:'' to file: '' (Is a directory)這個(gè)問題啦鸣,就是步驟8潮饱,第二個(gè)合并操作的時(shí)候-output 自定義合成文件存儲(chǔ)路徑(合成文件的名字AppVest)沖突了,重新?lián)Q個(gè)名字就行诫给,
(3)根據(jù)以上命令就在相應(yīng)位置生成了新的AppVest文件香拉,然后把這個(gè)新生成的文件拷貝到步驟7啦扬,Show in Finder相應(yīng)的framework中進(jìn)行AppVest文件替換 ? ,查看替換后的framework支持全部真機(jī)模擬器架構(gòu)
然后上面截圖看到的就是這個(gè)framework支持的架構(gòu)凫碌,
9扑毡,最后一步就是用這個(gè)庫(kù)了,把.framework拖進(jìn)其他項(xiàng)目運(yùn)用起來就行了证鸥,
最后僚楞,寫文章只是為了以后忘記的時(shí)候再過來看一眼勤晚!