【问题标题】:How to convert an Xcode project into a static library or framework?如何将 Xcode 项目转换为静态库或框架?
【发布时间】:2012-10-22 20:58:12
【问题描述】:

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

提前致谢。

【问题讨论】:

    标签: iphone objective-c frameworks static-libraries


    【解决方案1】:

    https://github.com/jverkoey/iOS-Framework 尝试此链接以创建框架和资源包。将您在项目中使用的图像、xib 和其他资源打包成一个包,并将您的类复制到您的 Cocoa Touch 静态库项目中。

    【讨论】:

      【解决方案2】:

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

      其他

      1. 创建一个名为“TestPlugin”的新项目并选择类型“Cocoa touch Static Library”。在这里,您将拥有一个目标“TestPlugin.a”。
      2. 添加新目标。在项目设置的左角,名称为:'Add Target'。在“OS X”的“框架和库”中选择“捆绑”。这是您的第二个目标,名为“TestPluginBundle.bundle”。
      3. 在您的 TestPlugin.a 目标的“构建短语”设置中,添加一个新的“目标依赖项”。这将首先生成 .bundle 文件,然后生成 .a 文件。
      4. 复制并添加所有“原始”项目文件(不包括 main.m 和 .xcodeproj 文件)到 TestPlugin 项目。
      5. 在 TestPluginBundle 的“构建阶段”设置中,将所有 .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. 在此之后将 .a 文件和 .bundle 文件添加到另一个项目。在另一个项目中需要重新添加相关框架。

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

      【讨论】:

      • 在完成以上所有步骤后,您能解释一下如何最终构建框架吗?
      • 我的意思是我们通常包含在 xcode 项目中的那个。预定义的框架,如 coredata、quartzcore 等。如何构建这样的框架?
      • 是否可以读取 .a 框架的内容?我最近发现了一个 .a 框架,但我不知道如何使用它。就像,那里有什么方法供我使用,也很少有帮助。也没有关于 .a 框架的纪录片,所以我真的被困住了。
      • @MelvinLai,我不知道如何阅读内容。我刚刚遇到的情况是我有 .a 库的头文件(这称为静态库)。你有这个吗?
      • @sunkehappy 抱歉,我很久没有登录这个网站了...我得到了一些关于我的 .a 文件的信息,但我没有使用它,因为它是第三个文件如果我使用它,Apple 会拒绝它的派对 API。所以我不再使用它了。好的,现在关于 .a 文件,我根本看不到任何静态库,它只是一个 .a 文件。我看不到任何头文件 我看不到 .a 文件中的内容。这是不可靠的。所以我把它推到一边。不过感谢您的回复:)
      猜你喜欢
      • 2016-01-10
      • 1970-01-01
      • 2015-05-07
      • 2017-10-30
      • 2017-09-22
      • 2010-10-24
      • 1970-01-01
      • 2014-04-23
      • 2020-06-04
      相关资源
      最近更新 更多