首先,一些一般定义(特定于iOS):
静态库 - 在编译时链接的代码单元,其不改变。
但是,iOS静态库是而不是允许包含图像/资产(仅限代码)。不过,您可以使用媒体套件来解决这个难题。
在Wikipedia here上可以找到更好更正式的定义。
动态库 - 在运行时链接的代码和/或资产单位可能更改。
但是,只有Apple被允许为iOS创建动态库。您不允许创建这些内容,因为这会让您的应用遭到拒绝。 (请参阅this其他SO帖子以进行确认和推理)。
软件框架 - 编译组代码完成某项任务......因此,你其实可以有一个静态框架或动态的框架,这是典型的只以上的编译版本。
查看Wiki on Software Framework了解更多详情。
因此,在iOS上,您唯一的选择基本上是使用静态库或静态框架(主要区别在于静态框架最常分布为已编译的.a
文件,而静态库可以简单地作为子项目 - 您可以看到所有代码 - 首先编译的代码及其生成的.a
文件被项目用作依赖项)。
现在我们对这些术语很清楚(呃),为iOS设置一个静态库和支持媒体包并不是太困难,并且有很多关于如何做这些的教程。我个人会推荐这一个:
https://github.com/jverkoey/iOS-Framework
这是一个非常直接的指导,没有涉及“假静态库”的缺点......看看更多信息.. 。
一旦你创建了你的静态库,它就像在Git中包含一个子模块一样简单,以便在不同的项目中使用。
祝你好运。
编辑
关于子项目一个项目中,据我所知,要得到这个工作/编译正确,实际上需要建立在子项目首先编译一个编译链,它创建一个静态框架.a
文件,该文件被项目用作依赖项。
下面是其中谈到这另一个有用的教程:
http://www.cocoanetics.com/2011/12/sub-projects-in-xcode/
EDIT 2
由于iOS 8的,苹果现在允许开发人员创建动态的框架! (注意:您的应用必须具有iOS 8的最低目标才能包含动态框架...不允许使用背面移植。)
这已添加为新的项目模板。在Xcode 6.1,这可以发现在:
New Project -> iOS -> Framework & Library -> Cocoa Touch Framework
您可以创建类似'框架内框架'的伞框架http://stackoverflow.com/a/27638841/1582217 – 2014-12-24 16:40:05
[如何在iOS sdk中创建Umbrella框架?](http:/ /stackoverflow.com/questions/27484997/how-to-create-an-umbrella-framework-in-ios-sdk) – 2014-12-25 07:59:31