歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> iOS開發:制作一個“真框架”項目

iOS開發:制作一個“真框架”項目

日期:2017/3/1 10:12:15   编辑:Linux編程

在項目開發中,共享代碼是很常見的。

由於iOS的限制,我們無法以“動態庫”的形式共享代碼。除了以源代碼方式,我們只能選擇靜態庫來共享代碼。

“真框架”項目以編譯後的二進制形式共享代碼,本質上還是一種靜態庫。但由於Xcode的限制(沒有提供相應的項目模板),要以框架的形式編譯出靜態庫,仍然十分麻煩。

首先,你需要下載 iOS Universal Framework Mk 7。解壓elc-ELCImagePickerController-b5357fa.zip。在解壓目錄下,打開終端運行RealFramework目錄(即“真框架”)下的install.sh腳本。真框架就會安裝到Xcode中。

注意:install.sh腳本需要root權限。

一、創建“真框架”項目

打開Xcode4.2,你現在創建一個Static iOSFramework項目了。

輸入項目名稱,如TestFramework。

現在我們准備把一個正常的Application項目封裝為“真框架”項目。這個正常的Application項目可以獨立運行,擁有自己的window、viewcontroller和圖形界面。

當然,你手上可能擁有別的Application項目,你完全可以把自己的Application項目封裝為“真框架”。

把這個Application項目的資源:.h文件、.m文件、.xib文件、.png文件、.plist文件,甚至是數據庫文件都拖到TestFramework項目中來,如下圖所示:

打開Target的Build Phases,可以看到CopyHeaders的Project段包含了項目所有的頭文件:

將所需頭文件拖到Public段。凡是使用該框架時要用到的頭文件都應該聲明為Public。這裡,為圖省事,我把所有頭文件都聲明為Public了。

然後是框架的引用。這很簡單,把Application中用到的框架都聲明在“真框架”項目的Link Binary With Libaries中。如下圖所示。

然後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 ”語句即可。

二、使用“真框架”

很簡單,新建一個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;

Copyright © Linux教程網 All Rights Reserved