如何有效地在iOS项目中添加iOS框架

最近开始在一个iOS项目上工作,用swift和objective-c编写。 截至目前,我们有一个单一的回购。 现在我们专注于创build一些框架,以便我们可以跨多个应用程序重复使用相同的框架。 我想知道你的意见。

  1. 如果我在我的客户端应用程序项目中添加framework.xcodeproj,我可以在编写导入语句后访问框架公共实体。 我关心的是每次我由客户端应用程序项目构build,这个framework.xcodeproj也编译,虽然它的代码没有改变,自上一次构build也不依赖于任何其他框架。

  2. 如果我添加框架作为framework.framework并使其进入embedded框架,我可以访问该框架的公共实体。 在这种情况下令人担忧的是“每当我更改框架的代码,我需要更新客户端应用程序项目中的框架”。

有没有什么办法可以在客户端应用程序项目中包含框架,我可以访问公共实体,并且不会在每次构build客户端应用程序项目时都获得构build?

如果框架在代码更新的时候生成,那就好了。

在过去,我使用了Visual Studio,如果在依赖项目中没有代码更改,就可以构build我的客户端项目,而无需构build依赖项目。

如果每次构build应用程序时构build框架,则取决于框架的types:

有cocoa触摸静态库和cocoa触摸框架。

cocoa触摸框架

它们始终是开源的,并将像您的应用程序一样构build。 (所以Xcode有时候会编译它,当你运行你的应用程序,并总是在清理项目之后。)框架只支持iOS 8和更新,但是你可以在框架中使用Swift和Objective-C。

cocoa触摸静态库

正如名字所说,它们是静态的。 所以当你将它们导入到你的项目时,它们已经被编译了。 您可以与他人分享,而不必向他们展示您的代码。 请注意,静态库目前不支持Swift。 你将不得不在库中使用Objective-C。 应用程序本身仍然可以用Swift编写。

结论

如果您不介意使用Objective-C,静态库似乎符合您的要求,那么框架应该只build立一次。

但是因为我喜欢Swift,我个人build议你使用框架(如果你不介意使用框架的其他人可以看到你的代码)。 我的经验表明,这个框架有时候并不是一个大问题。


AddThis写了一篇关于决定是否使用静态库或框架的好博客文章。

cocoa触摸静态库与cocoa触摸框架