開源架構,協助快速建立一個共用的庫,方便team開發:
https://github.com/kstenerud/iOS-Universal-Framework
參考:
http://blog.csdn.net/kmyhy/article/details/7419222
這個東西總結起來就是協助封裝:lib以及resource,主要3步:
1.把現有的項目(需要供其它人使用的)準備好
2.把東西全部拖動到realframe的項目裡面,編譯項有些特殊。會暴露.h
3. 把2中輸出的檔案拖到需要使用封裝的lib的項目中,然後就和一般使用系統lib一樣的方式,imports header,使用其中的方法/類等。
在項目開發中,共用代碼是很常見的。
由於iOS的限制,我們無法以“動態庫”的形式共用代碼。除了以原始碼方式,我們只能選擇靜態庫來共用代碼。
“真架構”項目以編譯後的二進位形式共用代碼,本質上還是一種靜態庫。但由於Xcode的限制(沒有提供相應的項目模板),要以架構的形式編譯出靜態庫,仍然十分麻煩。
首先,你需要下載 iOS Universal Framework Mk 7。解壓elc-ELCImagePickerController-b5357fa.zip。在解壓目錄下,開啟終端運行RealFramework目錄(即“真架構”)下的install.sh指令碼。真架構就會安裝到Xcode中。
注意:install.sh指令碼需要root許可權。
現在我們準備把一個正常的Application項目封裝為“真架構”項目。這個正常的Application項目可以獨立運行,擁有自己的window、viewcontroller和圖形介面。
當然,你手上可能擁有別的Application項目,你完全可以把自己的Application項目封裝為“真架構”。
把這個Application項目的資源:.h檔案、.m檔案、.xib檔案、.png檔案、.plist檔案,甚至是資料庫檔案都拖到TestFramework項目中來,封裝!
將所需標頭檔拖到Public段。凡是使用該架構時要用到的標頭檔都應該聲明為Public。這裡,為圖省事,我把所有標頭檔都聲明為Public了。
然後Build項目。編譯結果將放在“{USERNAME}/Library/Developer/Xcode/DerivedData/{PROJECT_NAME_AND_RANDOM_CRAP}/Build/Products/{BUILD_TYPE}”目錄下。每個BUILD_TYPE目錄下都有一個.embeddedframework和一個.framework檔案。其中.framework只包含代碼,.embeddedframework除代碼外還包括資源。一般使用.embeddedframework。
注意,有時候編譯出現“UILable 類型未聲明”之類的錯誤。這是因為在Application項目中,預設是包含UIKit標頭檔的,而“真架構”項目卻未包含UIKite標頭檔,所有的UIKit類型都不能被Xcode正確識別。我們只需要在.pch檔案中加入“#import <UIKit/UIKit.h>”語句即可。
二、使用“真架構”
很簡單,建立一個Application項目,將.embeddedframework檔案(其實是一個檔案夾)直接拖到專案檔夾中:
在TestFramework.embbeddedframework中,已經包含了TestFramework.framework,同時還有一個Resources目錄,包含了真架構用到的所有資源。
查看Target的Builder Phases,你可以發現TestFramework.framework架構已經被包含進LinkBinary with Libraries了。
當然,由於“真架構”並不會把依賴的庫編譯到架構檔案中(僅僅是引用),我們還必需在項目中加入TestFramework架構所用到的其他庫和/架構(圖中所列的庫/架構因具體項目而異):
現在,我們就可以在Application中使用真架構了:
#import <TestFramework/System.h>
⋯⋯
System* vc=[[Systemalloc]init];
self.window.rootViewController=vc;
[vc release];