iOS靜態庫實戰之Framework
需求
由於喜歡琢磨一些技術,這塊領域其實已經好多年就有人發表相關的技術文章,但是自己沒有親手實戰一次還真不能說是自己學到這門技術。前段時間研究了一下並動手做了一個靜態庫。效果挺好,也達到了我想要的預期結果並運用到了我實際項目中。今天重新翻看了一些資料,發現還有完善的地方,特意記錄一下,方便後期查閱。
戰前準備之.a與.framework庫的區別
總結:同一個靜態庫在不同程序中使用時,每一個程序中都得導入一次,打包時也被打包進去,形成一個程序。而動態庫在不同程序中,打包時並沒有被打包進去,只在程序運行使用時,才鏈接載入(如系統的框架如UIKit、Foundation等),所以程序體積會小很多,但是蘋果不讓使用自己的動態庫,否則審核就無法通過。
好了,已經了解了兩種類型庫的區別之後我們就開始動手製作自己的靜態庫吧。
製作Framework靜態庫
第一步 創建項目
第二步 創建需要封裝的類或者將需要封裝的第三方類加進項目裡面
第三步 修改項目配置
1、設置需要公開的頭文件
2、修改生成的Mach-O格式
3、將項目的最低支持系統版本設置成iOS 8,可根據自己實際情況設置
這裡需要注意的是公開的頭文件里import了其他類也得添加到public中公開出來。如果不想將import的類公開出來,那麼在頭文件中用@class然後在對應的.m文件中再import。
需要注意的是默認的Architectures是不包含armv7s,如果需要支持該架構,需要配置一下
第四步 創建通用靜態庫執行腳本
1、創建Target
2、創建Run Script腳本
3、編寫執行腳本
第五步 選中新建的Target,Run,如果沒有異常的話,會自動彈出生成的Framework文件
大功告成!
最後我們來驗證下Framework支持哪些架構,相關指令格式如下:
參考資料
iOS中.a與.framework庫的區別
Xcode 6製作動態及靜態Framework
關於ios開發framework及.a文件支持架構判斷以及合併
再一次感謝您花費時間閱讀這篇文章!
微博: @Danny_呂昌輝
博客: SuperDanny
TAG:AppleDeveloper |