如何将Xcode项目转换为静态库或框架?

时间:2012-11-02 07:40:24

标签: iphone objective-c frameworks static-libraries

我有一个项目,我需要将其作为框架导入到其他项目中,就像我们导入Coredata框架,Quartzcore等一样。如何实现这一目标?如何将我的项目编译成可以导入到其他项目的库或框架?请解释一下步骤。

提前致谢。

2 个答案:

答案 0 :(得分:4)

https://github.com/jverkoey/iOS-Framework尝试使用此链接创建框架和资源包。将项目中使用的图像,xib和其他资源包装到bunble中,并将类复制到Cocoa Touch Static Library项目中。

答案 1 :(得分:4)

如果你想编译像UIKit.framework这样的'标准'框架,试试这个Universal Framework iPhone iOS

否则

  1. 创建一个名为“TestPlugin”的新项目,然后选择“Cocoa touch Static Library”。在这里你将有一个目标'TestPlugin.a'。
  2. 添加新目标。在项目设置的左下角,名称为:“添加目标”。在“OS X”中的“框架和库”中选择“捆绑”。这是你的第二个目标名为'TestPluginBundle.bundle'。
  3. 在TestPlugin.a目标的“Build Phrases”设置中,添加一个新的“Target Denpendencies”。这将首先生成.bundle文件,然后生成.a文件。
  4. 将所有'原始'项目的文件(不包括main.m和.xcodeproj文件)复制并添加到TestPlugin项目。
  5. 在TestPluginBundle的“Build Phases”设置中,将所有.xib .png(可能是.jpg)文件添加到“Compile Sources”。将空间资源(例如.wav,.gif和.html)添加到“复制捆绑资源”。
  6. 将从主bundle加载资源的所有代码替换为从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. 在此之后将.a文件和.bundle文件添加到另一个项目中。在另一个项目中,您需要再次添加相关框架。

  8. 我已经成功地将这种方法用于我的工作。