Framework是資源的集合疮丛,將靜態(tài)庫和其頭文件包含到一個結(jié)構(gòu)中,讓Xcode可以方便地把它納入到你的項目中漱办。
靜態(tài)庫:鏈接時完整地拷貝至可執(zhí)行文件中这刷,被多次使用就有多份冗余拷貝婉烟;例如 .a和.framework
動態(tài)庫:鏈接時不復(fù)制娩井,程序運行時由系統(tǒng)動態(tài)加載到內(nèi)存,供程序調(diào)用似袁,系統(tǒng)只加載一次洞辣,多個程序共用,節(jié)省內(nèi)存昙衅;例如:.dylib和.framework
系統(tǒng)的.framework是動態(tài)庫扬霜,我們自己建立的.framework是靜態(tài)庫。
.a與.framework的區(qū)別:
.a是一個純二進制文件而涉,.framework中除了有二進制文件之外還有資源文件著瓶。
.a文件不能直接使用,至少要有.h文件配合啼县,.framework文件可以直接使用材原。
.a + .h + sourceFile = .framework。
詳情區(qū)別請前往 http://www.2cto.com/kf/201408/325602.html
接下來記錄一下遲到的Framework文件的打包過程:銜接上一篇的 Bundle&Framework&.a打包??
一季眷、創(chuàng)建Framework工程
二余蟹、創(chuàng)建添加需要集成打包在Framework中的文件,比如說Bundle子刮、Framework威酒、.a、.h/.m類文件等等...之后進行你的需求操作就是了
三、配置工程的打包環(huán)境
-
將Mach-O Type設(shè)為Static Library葵孤, framework可以是動態(tài)庫也可以是靜態(tài)庫担钮,對于系統(tǒng)的framework是動態(tài)庫,而用戶制作的framework只能是靜態(tài)庫尤仍。
Build Active Architecture Only修改為NO裳朋,否則生成的靜態(tài)庫就只支持當(dāng)前選擇設(shè)備的架構(gòu);
iOS Deployment Target 吓著,靜態(tài)庫需要支持的最低版本號鲤嫡,要小于等于主項目的版本號;
Valid Architecture 支持的iOS的CPU框架绑莺;
-
將你要公開的頭文件拖至Public下暖眼,要隱藏的放在Private或者Project下,當(dāng)然纺裁,隱藏的頭文件就無法再被引用诫肠。
-
把允許別人引用的頭文件引入第一步創(chuàng)建項目時自動生成的WSLFramework.h中,WSLFramework.h 文件的作用是整個包對外提供的入口頭文件欺缘。
四栋豫、合并打包
-
分別在模擬器和真機設(shè)備下編譯,生成兩個WSLFramework.framework文件谚殊,然后把兩個WSLFramework.framework文件中的WSLFramework用命令合成一個,和.a的文件合成命令一樣(lipo -create +上面兩個文件的路徑 + -output + 合成后文件的輸出路徑 )
-
命令執(zhí)行完后谤专,輸出路徑下的WSLFramework就是你合并后的文件发侵,將這個文件名字改成和你未合并之前的一樣,放到Debug-iphoneos(真機)目錄下WSLFramework.framework文件夾下,替換掉原來的WSLFramework文件蠢甲;此時就可以把當(dāng)前WSLFramework.framework文件拿出來了虫蝶,他就是最后生成的framework文件担神。
五怕磨、使用測試
好了,這只是簡單基礎(chǔ)的framework打包置尔,具體運用到項目中時可能會有各種各樣的問題杠步,歡迎在此下方留言交流討論... ??