Framework
最近需要將自己項(xiàng)目的公共代碼打包成
Framework
來使用歇攻,但是在打包過程中遇到一個問題,就是提取的公共代碼中用到了一些第三方的庫,比如AFNetworking
等总处,怎么才能把第三方庫集成進(jìn)來讓代碼編譯通過并打包成功呢,網(wǎng)上找了很久都沒有找到一篇專門說這個的狭归,讓我走了不少坑夭坪,現(xiàn)在就分享一下在打包Framework
時怎樣使用CocoaPods
引入第三方庫。
這篇文章已經(jīng)不適用过椎,建議查看我的另一篇文章:【iOS 開發(fā)】利用 Carthage 將項(xiàng)目打包 Framework 并依賴 CocoaPods 第三方庫的方法
創(chuàng)建 Framework 工程
1. 創(chuàng)建打包工程
- 打開
Xcode
新建一個工程室梅,選擇Framework & Libray
選項(xiàng)中的Cocoa Touch Framework
,這里說一下我的Xcode
版本是8.3.2
疚宇。
創(chuàng)建工程
- 假設(shè)我的代碼中要用到
MBProgressHUD
這個第三方庫(比較好演示)亡鼠,然后使用CocoaPods
在工程中集成MBProgressHUD
,集成方法和普通項(xiàng)目一模一樣敷待。
CocoaPods
- 然后選擇工程下的
TestFramework.xcworkspace
重新打開工程间涵。
重新打開工程
- 因?yàn)橐虬璧奈募赃@里我自己創(chuàng)建了一個測試類榜揖,并在里面使用了
MBProgressHUD
這個庫勾哩,在實(shí)際的打包過程中,直接把需要打包的所有文件拖到該工程中即可举哟。
測試類
2. 添加公開頭文件
- 選中
Target
思劳,選擇Build Phases
-Headers
,可以看出有三個選項(xiàng)妨猩,分別是Public 敢艰、Private 、Project
册赛,把需要公開給別人的.h
文件拖到Public
中钠导,把不想公開的,即為隱藏的.h
文件拖到Project
中森瘪。
Headers
- 完成上述步驟之后牡属,在默認(rèn)生成的
.h
文件中,我的是TestFramework.h
扼睬,把所有需要暴露的.h
文件都用#import <TestFramework/PublicHeader.h>
引入逮栅,記住一定要將所有需要暴露的.h
文件都引入,也就是上面Headers
-Public
中加的所有.h
文件窗宇,不然編譯后生成的.framework
在引用的時候會有警告措伐。
引入頭文件
3. 更改設(shè)置參數(shù)
- 選中
Target
,選擇Build Settings
军俊,在Architectures
下增加armv7s
侥加。
更改設(shè)置參數(shù)
- 選中
Target
,選擇Build Settings
粪躬,在搜索欄搜索Mach-O Type
担败,將Mach-O Type
修改為Static Library
昔穴。
更改設(shè)置參數(shù)
工程打包成 Framework
1. 真機(jī)編譯所有文件
- 按照下圖將編譯的
Device
選擇為真機(jī) ,然后按下Command + B
開始編譯提前,編譯成功后右鍵Products
文件夾下的.framework
文件吗货,點(diǎn)擊show in Finder
。
編譯真機(jī)
- 打開后可以看到打包完成的真機(jī)
Framework
包狈网。
Framework
2. 模擬器編譯所有文件
- 按照下圖將編譯的
Device
選擇為隨便一個模擬器 宙搬,然后按下Command + B
開始編譯,編譯成功后右鍵Products
文件夾下的.framework
文件拓哺,點(diǎn)擊show in Finder
勇垛。
編譯模擬器
- 打開后可以看到打包完成的模擬器
Framework
包。
Framework
3. 將兩個 Framework 合成
上面有兩個 Framework
拓售, 一個是 Debug-iphoneos(真機(jī))
下的,一個是 Debug-iphonesimulator(模擬器)
下的镶奉,需要通過終端命令將兩個 Framework
合為一個模擬器和真機(jī)都可使用的 Framework
础淤。
- 打開終端先輸入
lipo -create
,然后輸入空格
哨苛。
Framework 合成
- 接著將
Debug-iphoneos(真機(jī))
下的TestFramework
也就是上面框出來的空白文件直接拖到終端鸽凶,終端會自動顯示路徑。
Framework 合成
- 然后直接將
Debug-iphonesimulator(模擬器)
下的TestFramework
也拖到終端建峭。
Framework 合成
- 接著輸入
-output
玻侥,然后輸入空格
。
Framework 合成
- 然后輸入
~/Desktop/NewTestFramework
后直接回車亿蒸。
Framework 合成
- 這時候桌面上會多一個新的文件為
NewTestFramework
凑兰,這時候?qū)⒄鏅C(jī)下的.framework
包文件復(fù)制出來,然后將NewTestFramework
重命名為TestFramework
也就是.framework
包中那個空白文件的名字边锁,如果有.lipo
后綴就去掉姑食,接著替換.framework
包中的那個空白文件。
Framework 合成
- 最終替換完成后的
.framework
包就是我們最后所需要的包了茅坛,但是可以發(fā)現(xiàn)打包完后的.framework
包里面是沒有CocoaPods
集成的第三方庫的音半,所以在使用.framework
包時,工程中必須也要集成.framework
包中用到的第三方庫贡蓖,否則會找不到文件而報(bào)錯曹鸠。
測試打包完的 Framework
- 新建一個測試工程
TestDemo
,將打包完的TestFramework.framework
拖到工程中斥铺,測試一下剛才創(chuàng)建的 TestClass 類彻桃,可以看到MBProgressHUD
加載框顯示出來了,測試成功晾蜘。
測試工程
- 上面說了叛薯,測試工程中也要集成
MBProgressHUD
浑吟,否則會報(bào)錯。
第三方庫
主要步驟大概就是這樣耗溜,如果有發(fā)現(xiàn)什么問題可以給我留言组力,希望能夠幫助大家少走一些坑。
將來的你抖拴,一定會感激現(xiàn)在拼命的自己燎字,愿自己與讀者的開發(fā)之路無限美好。