iOS framework的具體合成步驟

framework的方便之處

1.如果公司有多個(gè)項(xiàng)目,很多模塊都相似或者一樣,那么將功能模塊直接打成 framework, 下次用的時(shí)候直接導(dǎo)入就行
2.如果將一個(gè)模塊代碼直接拷貝進(jìn)項(xiàng)目,也是可以. 但是XCode編譯速度會(huì)降低

動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)

靜態(tài)庫(kù):鏈接時(shí)完整地拷貝至可執(zhí)行文件中,被多次使用就有多份冗余拷貝。
動(dòng)態(tài)庫(kù):鏈接時(shí)不復(fù)制,程序運(yùn)行時(shí)由系統(tǒng)動(dòng)態(tài)加載到內(nèi)存,供程序調(diào)用,系統(tǒng)只加載一次,多個(gè)程序共用,節(jié)省內(nèi)存。
而我們只能做的 : 靜態(tài)庫(kù) (framework 或 .a)

framework 和 .a的區(qū)別

.a是一個(gè)純二進(jìn)制文件,.framework中除了有二進(jìn)制文件之外還有資源文件。
.a文件不能直接使用,至少要有.h文件配合,.framework文件可以直接使用。
.a + .h + sourceFile = .framework

framework 的合成步驟

1.XCode 新建項(xiàng)目
1.jpg
2.項(xiàng)目取名稱(chēng)(KNActionSheet為例)
2.jpg
// 記得修改framework所需要設(shè)配的版本(iOS9.0)
3.jpg
3.將寫(xiě)好的模塊類(lèi)直接添加到項(xiàng)目中,并修改參數(shù)
// 1.設(shè)置 Build Settings 中的 Linking 三個(gè)參數(shù)
4.jpg
// 2.設(shè)置 Build Settings 中的 Architectures ,增加armv7s
5.jpg
// 3.設(shè)置 Build Phases 中的 Headers ,將需要暴露出去的文件 從 Project 拖到 Public 中
6.jpg
// 4.導(dǎo)入頭文件
7.jpg
4.打包 模擬器的 framework 和 真機(jī)的framework
// 1.模擬器framework : 選中模擬器 ,直接 command + B 
// 2.真機(jī)framework   : 選中Generic iOS Device ,直接 command + B
// 3.找到 Products/KNActionSheet.framework的位置
8.jpg
framework文件位置.jpg
5.現(xiàn)在呢! 模擬器和真機(jī)的 framework 都已經(jīng)有了.但是它們只能單獨(dú)使用(模擬器的framework 只能跑 模擬器, 真機(jī)的 framework 只能跑真機(jī))
6.模擬器和真機(jī)的 framework 合成
// 1.打開(kāi) 終端 termimal
// 2.輸入 lipo -create 模擬器KNActionSheet.framework中的 KNActionSheet 真機(jī)KNActionSheet.framework中的 KNActionSheet -output 桌面新建文件 
10.jpg
例如: lipo -create /Users/LuKane/Library/Developer/Xcode/DerivedData/KNActionSheet-enchucqlvbpvaigfpkcoeabzthqb/Build/Products/Debug-iphoneos/KNActionSheet.framework/KNActionSheet /Users/LuKane/Library/Developer/Xcode/DerivedData/KNActionSheet-enchucqlvbpvaigfpkcoeabzthqb/Build/Products/Debug-iphonesimulator/KNActionSheet.framework/KNActionSheet -output /Users/LuKane/Desktop/NewFramework
// 3.回車(chē)
// 4.注意 : 建議在桌面新建一個(gè)文件,而合成的文件 是和 新建文件夾一樣層級(jí), 合成的文件后綴名:xxxx.lipo ,移除后綴名,并重命名成自己的framework名(例如:KNActionSheet),找到模擬器或者真機(jī)的 framework, 替換framework中的 KNActionSheet 文件. 然后將當(dāng)前framework 拷貝到 桌面上. 結(jié)束
// 5.合成后的framework 比 模擬器 和 真機(jī)的都大, 畢竟是 合成的. 所以建議 : 單獨(dú)用 模擬器的 或者 真機(jī)的 framework就行

注意 : 最好在Build Settings中的 Other Linker Flags 中 增加 -Objc


生成的文件.jpg
修該后的文件.jpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容