該小結只是簡單總結制作自己私有庫的步驟總結疙教,關于什么是framework 與系統(tǒng)framework區(qū)別 , .a , dylb,tdb 靜態(tài)庫 動態(tài)庫等,以及它們的區(qū)別 可以百度看下
制作過程中的參考鏈接(非常感謝):
http://www.reibang.com/p/4959e059886c
https://www.cnblogs.com/linfenren/p/6003513.html
https://blog.csdn.net/zhangshichi/article/details/71440060
http://www.reibang.com/p/e056fde1be17
需求
公司合作的三方提供了一個ocr sdk下硕,其實就是包含.a文件降瞳,bundle和頭文件(人臉識別)责静,該sdk 能檢測被拍攝者是真臉還是假臉,返回的信息為dic信息和真臉圖片本地路徑『┘椋現(xiàn)在領導需求想把該 sdk進行一個二次封裝。具體為:
將本地真臉圖片上傳到服務器 (后臺提供api)凿试;
上傳成功 后臺會返回圖片url和一些相應的信息排宰,例如流水號似芝;
二次封裝sdk 給外界回調 服務器返回的url和信息。
demo使用二次封裝sdk目錄結構:
嘗試一
cmd+shift+n 新建靜態(tài)庫 選擇static library,一步步 一系列嘗試得到sdk虾啦,放在demo里使用 總是編譯不過麻诀。后來網上查找發(fā)現(xiàn) 說是 static library打包方式不支持 里面含有.a文件。
嘗試二 (最終ok)
選擇framework方式傲醉,按照以上參考鏈接配置蝇闭,最終ok。大概步驟:
1 buildsetting配置
build active architecture 設置成no硬毕;
valid architectures 添加 armv7s呻引;
enable bitcode 設置no (因為包含的.a 不支持bitcode);
dead code stripping 設置no;
Mach-O Type 選擇static library;(非常重要吐咳,這也是打包動態(tài)庫和靜態(tài)庫的區(qū)別)
Other Linker Flags 有兩個選項 -all_load和-ObjC (暫時沒配逻悠,編譯不過的時候可以嘗試修改);
2 暴露頭文件
提供外面能訪問的頭文件 兩種途徑設置:
選中要暴露的頭文件韭脊,查看右邊導航 target membership里面童谒,勾選 并設置成public;
選中工程->TARGETS->build phases下 headers 項沪羔,將頭文件移動到public group饥伊。
3 添加依賴庫 (我這個framework暫時沒用到)
注意點
我這次二次封裝,因為要將本地圖片上傳到服務器蔫饰,所以就引入了AFNetworking琅豆,之前嘗試一的時候用pod集成,遇到了一些問題篓吁。后來覺得就一個上傳茫因,也沒必要集成那么多用不到功能,所以就直接拖的源文件杖剪。
遇到的問題:
1 拖的時候要特別注意冻押,若使用的工程里 有集成AFN 那就不要勾選add target,否則會出現(xiàn) duplicate arm64 錯誤摘盆;
2 Include of non-modular header inside framework module
將Build Settings中的Allow Non-modular Includes In Framework Modules設為YES
參考:http://www.reibang.com/p/f5620c85f881
3 二次封裝的sdk 里 引入之前的.a 里面h文件 not found
解決方法:把該文件 也暴露出來
End
待解決的問題:二次封裝的sdk能正常使用翼雀,但是發(fā)現(xiàn) sdk里之前的.a下面的bundle 圖片沒有顯示。