2012-11-02 98 views
11

我有一個項目,我需要導入到其他項目作爲框架就像我們如何導入Coredata框架,Quartzcore等..如何實現這一目標?如何將我的項目編譯爲可導入其他項目的庫或框架?請解釋步驟。如何將Xcode項目轉換爲靜態庫或框架?

在此先感謝。

回答

4

https://github.com/jverkoey/iOS-Framework嘗試使用此鏈接創建框架和資源束。將您在項目中使用的圖像,xib和其他資源包裝成bunble並將您的類複製到Cocoa Touch靜態庫項目中。

4

如果你想編譯像UIKit.framework「標準」的框架,試試這個Universal Framework iPhone iOS

其他

  1. 創建一個名爲「TestPlugin」新項目並選擇型「可可觸摸靜態庫」 。在這裏你將有一個目標'TestPlugin.a'。
  2. 添加新的目標。在項目設置的左上角,名稱是:「添加目標」。在'OS X'的'框架和庫'中選擇'Bundle'。這是您的第二個目標名爲「TestPluginBundle.bundle」。
  3. 在您的TestPlugin.a目標的「生成短語」設置中,添加一個新的「目標相關性」。這將首先生成.bundle文件,然後生成.a文件。
  4. 將所有'Original'項目的文件(不包括main.m和.xcodeproj文件)複製並添加到TestPlugin項目中。
  5. 在TestPluginBundle的「Build Phases」設置中,將所有.xib .png(也許.jpg)文件添加到「編譯源代碼」中。將空間資源(如.wav,.gif和.html)添加到「複製軟件包資源」中。
  6. 替換所有從主包加載資源以從TestPluginBundle加載資源的代碼。也許你想爲UIImage添加一個類別,因爲你想使用imageNamed:,這樣就可以使用[UIImage testPluginImageNamed:@"small.png"]。在項目中進行替換很容易,並添加相關的頭文件。採取的.xib文件例如:

    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
    { 
        //self = [super initWithNibName:nibNameOrNil bundle:[NSBundle mainBundle]]; 
        // you need to define a method to get the bundle 'TestPluginBundle.bundle', here I used '[TestPlugin TestPluginBundle]' 
        self = [super initWithNibName:nibNameOrNil bundle:[TestPlugin TestPluginBundle]]; 
        ... 
    } 
    
  7. 在這之後的某文件和.bundle文件添加到另一個項目。在另一個項目中,您需要再次添加相關的框架。

我已經成功地將這種方法用於我的工作。

+0

能否請您在完成上述所有步驟後最終解釋如何構建框架? – booleanBoy

+0

「框架」是什麼意思? – sunkehappy

+0

我的意思就像我們通常包含在xcode projects ..預定義的框架,如coredata,quartzcore等。如何構建這樣的框架? – booleanBoy

相關問題