啥都不說(shuō)直入主題
1.打開xcode創(chuàng)建framework項(xiàng)目
2.將你的源碼文件放進(jìn)工程
3.將你要公開的頭文件寫在這里
并且在build phases里把這些頭文件從project移動(dòng)到public
4.選擇工程文件>target第一項(xiàng)>Build Setting>搜索linking妖混,然后幾個(gè)需要設(shè)置的選項(xiàng)都顯現(xiàn)出來(lái)裙椭,首先是Dead Code Stripping設(shè)置為NO芳肌,網(wǎng)上對(duì)此項(xiàng)的解釋如下,大致意思是如果開啟此項(xiàng)就會(huì)對(duì)代碼中的”dead”峦萎、”unreachable”的代碼過(guò)濾还棱,不過(guò)這個(gè)開關(guān)是否關(guān)閉温眉,似乎沒有多大影響,不過(guò)為了完整還原framework中的代碼褒纲,將此項(xiàng)關(guān)閉也未曾不可准夷。然后將Link With Standard Libraries關(guān)閉,我想可能是為了避免重復(fù)鏈接莺掠。最后將Mach-O Type設(shè)為Static Library衫嵌,framework可以是動(dòng)態(tài)庫(kù)也可以是靜態(tài)庫(kù),對(duì)于系統(tǒng)的framework是動(dòng)態(tài)庫(kù)彻秆,而用戶制作的framework只能是靜態(tài)庫(kù)楔绞。還有一個(gè)我踩的坑,要設(shè)置defines module為NO掖棉,不然集成的時(shí)候會(huì)出現(xiàn)Include of non-modular header inside framework module錯(cuò)誤墓律。設(shè)置bitcode為NO。
這里的默認(rèn)就好了幔亥。
5.如果要用到cocoapods第三方庫(kù)耻讽,則直接跟正常項(xiàng)目一樣添加cocoapods就行了
6.添加bundles圖片,則直接新建文件夾帕棉,然后改后綴名為.bundle然后把圖片拖進(jìn)去就行了针肥。
用圖片的時(shí)候這樣用
7.分別選擇模擬器和真機(jī)command+B最終生成模擬器的framework和真機(jī)的framework,然后我們將他們合并:
打開終端香伴,lipo -create 模擬器framework里面的二進(jìn)制文件路徑 真機(jī)framework里面的二進(jìn)制路徑 -output 輸出合并后的二進(jìn)制路徑/二進(jìn)制文件名稱(注意是合并framework里面的二進(jìn)制文件而不是framework)最后把輸出合并后的二進(jìn)制文件復(fù)制替換到模擬器framework里面的二進(jìn)制文件和真機(jī)framework里面的二進(jìn)制文件慰枕。
8.將替換合并后的模擬器framework或者真機(jī)framework直接拖到項(xiàng)目工程中,然后再把存放圖片的bundle也拖到項(xiàng)目工程中即纲。直接使用就行了具帮。
參考資料:
Xcode 創(chuàng)建.a和framework靜態(tài)庫(kù)
ios開發(fā):Xcode8制作framework及使用
iOS8 Framework使用加載xib及圖片
【iOS 開發(fā)】打包 Framework 時(shí)使用 CocoaPods 引入第三方庫(kù)的方法