記錄一次將聲網(wǎng)的framework集成到自己的framework里的過程玛迄。
1.找到二進(jìn)制文件
2.將AgoraRtcEngineKit的二進(jìn)制文件改成.a的后綴名,并且拖到Header里审葬,給Header改名為agoLib
3 .開始制作自己的framework項(xiàng)目作瞄,將agoLib文件夾拖進(jìn)framework項(xiàng)目里,注意勾選Copy...和Add to target選項(xiàng)。
4.將AFNetworking拖到項(xiàng)目里倍踪,注意:勾選Copy瓣窄、不勾選“Add to target”選項(xiàng)(不勾選“Add to target”選項(xiàng)笛厦!不勾選“Add to target”選項(xiàng)!)俺夕。因?yàn)橐砑游覀兊膄ramework的工程基本都會(huì)添加AFNetworking裳凸,所以這里不勾選“Add to target”,具體工程單獨(dú)添加AFNetworking即可劝贸。
5.將bitcode置為NO
6.(1)選擇工程->targe->build setting姨谷,在搜索框中搜索linking,進(jìn)行如下設(shè)置
(2)將Build Active Architecture Only 設(shè)為 NO
7.(1)把要公開的頭文件已到Public中去映九,在使用.framework時(shí)只能調(diào)用公開.h文件中的聲明梦湘。
(2)
完成上述步驟之后,在ADRTCKit.h文件中,把所有需要暴露的.h文件都用#import < ADRTCKit/PublicHeader.h>引入,記住一定要將所有的需要暴露的.h文件都寫在給定位置,不然編譯后生成的.framework在引用的時(shí)候會(huì)有警告;
8.開始編譯,選擇Generic iOS Device 或者 真機(jī)件甥,編譯一下捌议,再選擇模擬器環(huán)境編譯一下
9.上面的操作會(huì)出現(xiàn)兩個(gè)版本的.framework,點(diǎn)擊Products中的framework引有,選擇右鍵在文件夾中查看瓣颅。
10.真機(jī)版本適用于真機(jī)調(diào)試開發(fā),模擬器版本適用于模擬器調(diào)試開發(fā)譬正,將兩個(gè)版本中的 二進(jìn)制 文件通過終端合并成通用的弄捕,終端指令:lipo -create +上面兩個(gè)文件的路徑 +-output+ 合成后文件的輸出路徑(路徑后再拼一下要導(dǎo)出的文件就不會(huì)出現(xiàn)其他教程里 can't move temporary file的error了,這樣直接生成所需目標(biāo)文件不會(huì)生成.lipo的文件)导帝;
lipo -create /Users/shiguang/Library/Developer/Xcode/DerivedData/ADRTCKit-dyfcbfdpajuozpbaowtdlgrxtgpm/Build/Products/Debug-iphonesimulator/ADRTCKit.framework/ADRTCKit /Users/shiguang/Library/Developer/Xcode/DerivedData/ADRTCKit-dyfcbfdpajuozpbaowtdlgrxtgpm/Build/Products/Debug-iphoneos/ADRTCKit.framework/ADRTCKit -output /Users/shiguang/Desktop/00000Demo/000/0lib/ADRTCKit
11.將合并生產(chǎn)的ADRTCKit文件替換真機(jī)生產(chǎn)的ADRTCKit.framework中的ADRTCKit文件
使用
12.創(chuàng)建一個(gè)新的項(xiàng)目,將替換后的ADRTCKit.framework添加到項(xiàng)目本地目錄穿铆。
將制作的framework添加到工程里您单。
最后,導(dǎo)入項(xiàng)目需要的其他依賴庫并配置工程(如將bitcode置為NO)荞雏。
參考:http://www.reibang.com/p/e588bb0411d8
http://www.gaoshilei.com/2016/11/17/Static%20Library/
注意:
framework中使用了 CateGory 的時(shí)候虐秦,調(diào)用app出現(xiàn) "selector not recognized" 平酿,解決方法是 在調(diào)用的app的 Build Settings --> Linking-> Other Linker Flags 中加上 -ObjC 或者-all_load
參考:https://blog.csdn.net/tangaowen/article/details/39996213