?為什么我們要學(xué)習(xí)打包生成自己的.framework?
如果你想將你開發(fā)的控件與別人分享,一種方法是直接提供源代碼文件。然而幻梯,這種方法并不是很優(yōu)雅。它會暴露所有的實現(xiàn)細(xì)節(jié)努释,而這些實現(xiàn)你可能并不想開源出來碘梢。此外,開發(fā)者也可能并不想看到你的所有代碼伐蒂,因為他們可能僅僅希望將你的這份漂亮代碼的一部分植入自己的應(yīng)用中. 總結(jié) 方便的共享代碼但是不給別人看具體實現(xiàn)(裝逼用).
理論認(rèn)識
一.什么是庫?
庫是共享Code的一種方式,一般分為靜態(tài)庫和動態(tài)庫.
追問,這兩則有什么區(qū)別呢?
靜態(tài)庫:鏈接時完整地拷貝至可執(zhí)行文件中,被多次使用就有多份冗余拷貝.
動態(tài)庫:鏈接時不復(fù)制,程序運行時由系統(tǒng)動態(tài)加載內(nèi)存,供程序調(diào)用,系統(tǒng)只加載一次
IOS程序員動態(tài)庫怎么識別呢?
.dylib和.framework
為什么.framework既是靜態(tài)庫又是動態(tài)庫
系統(tǒng)的.framework是動態(tài)庫,我們自己建立的.framework是靜態(tài)庫.
.a和.framework 有什么區(qū)別?
.a是一個純二進制文件,.framework除了二進制文件還有資源文件
.a不能直接使用,至少要有.h文件配合 .framework 文件可以直接使用
.a + .h + sourceFile = .framework
所以建議直接使用.framework
本文目標(biāo)
本文將基于Xcode8創(chuàng)建一個簡單的工程痘系,用最簡單的方式教大家如何制作一個自己的framework,目的就是簡單易學(xué)的制作framework饿自。這種方法可以使得你的代碼易分享汰翠,在多個工程中復(fù)用,并且可以隱藏實現(xiàn)細(xì)節(jié)昭雌,控制公開的頭文件复唤。
步驟
1、打開Xcode烛卧,新建工程佛纫。
不要選擇“Application”妓局,選擇“Framework & Library”。選擇第一個呈宇,然后Next好爬。
取名為MyFrameworkTest.
2、創(chuàng)建功能類甥啄。
這里我創(chuàng)建一個繼承自NSObject的SayHello類
3存炮、申明方法并實現(xiàn)方法
4、更改配置
在TARGETS下選中工程蜈漓,在Build Settings下更改幾個參數(shù)穆桂。
5、增加armv7s
在Architectures下增加armv7s融虽,并選中享完。將Build Active Architecture Only 設(shè)置為NO。
6有额、設(shè)置Headers
將你要公開的頭文件拖至Public下般又,要隱藏的放在Private或者Project下(建議放在Project),當(dāng)然巍佑,隱藏的頭文件就無法再被引用倒源。
添加頭文件?
關(guān)鍵的關(guān)鍵來了 ?打包Framework
1.選中模擬器,編譯程序
2.選中測試機句狼,編譯程序
3.在finder中找到framework文件
4.通過終端命令將兩個framework合為一個模擬器和真機都可使用的framework笋熬。
打開終端,手動輸入lipo -create命令腻菇,然后是iphoneos下frameworkTest的路徑(找到iphoneos下frameworkTest的文件胳螟,拖拽進來),會自動有空格筹吐,是simulator下frameworkTest的路徑(同樣找到simulator下frameworkTest的文件糖耸,拖拽進來),也會自動有空格丘薛,然后輸入-output嘉竟,然后敲空格,在引入一個新的路徑(拖拽進一個新的路徑)洋侨,最后敲回車舍扰。這樣就完成合并了。
然后就是用合并的庫 替換掉模擬器的庫 和真機的庫 注意-名字取一樣的最后都可以把要替換好了的庫 show in finder 拖出來
測試是否成功
還有其他方法自己去發(fā)現(xiàn)吧? ... 最后感謝原文 和玨貓 http://www.reibang.com/p/87dbf57cfe4a