在ios中开发一个多模块(框架)项目



我正在寻求关于启动新开发项目的建议,以及使用什么技术。

我们正在开始构建一个企业iOS8应用程序,该应用程序将具有多个模型(可能是框架)。理想情况下,我希望代码的某些部分(比如一些算法、数据连接部分,也许还有一些特定的UI组件)都在各自的iOS框架中,这样就可以在项目中拯救它们。

此外,对于重用问题,我希望将每个单独的组件存储在单独的git归档中。这让我想到了的几个选项

  1. gitSubModule
  2. 可可豆
  3. 迦太基
  4. git子树
  5. 谷歌回购

我曾经处理过子模块,我发现它们既尴尬又混乱。

尽管这可能是被宣布无效的主观问题之一,但我希望人们能够分享他们对使用这些不同方法的直接观察

我想根据以下标准选择一种方法

  • 一个模块的更新EASILY暴露在项目的其余部分

    • 例如,在CocoaPods中,我相信你可以指向git repo,而不是特定的版本
  • 更新是简单并且不会破坏所有

    • 在使用GitSubmoduels时,每次我试图更新其中一个subs时,我都会破坏项目

(我希望这个问题不会因为主观而结束)

免责声明:我从未使用过选项3-5。

子模块只是源代码管理。它们不能为您提供方便/自动/管理子项目更新和版本控制的方式。在我职业生涯的早期,我使用git子模块来管理依赖关系。我对它们没有什么大问题,但我必须注意的是,我从未承诺回到子模块。尤其是我觉得submodules有点尴尬。他们可以处理来源,但仅此而已。如果你在主应用程序中使用的子项目将被更新并添加新文件(或删除现有文件),你需要在主Xcode项目中跟踪这些更改-你需要添加新文件并删除删除的文件。

至于CocoaPods:我已经使用它们2.5年了,它非常适合我。我认为CocoaPods已经足够成熟,可以进行开发。主要优点:

  • 他们实际上库集成到您的主项目中——您只需要运行pod install(或update)并享受配置的工作空间
  • 它们允许您对子项目使用版本控制-您可以选择特定的版本,您可以使用comarison运算符来选择早于xxx的版本,不早于xxx版本等,您可以配置它们来选择repo中最新的可用提交
  • 它们管理依赖关系-你可以使用另一个茧作为你的依赖关系
  • 它们支持组件-您可以将单个吊舱拆分为可选组件
  • 它们支持私有存储库-您可能希望在自己的specs repo上保持企业组件pod的私有性

唯一的缺点可能会出现(对我来说这不是一个问题,但其他人可能会争辩):

  • cocoapods集成过程对您的主项目文件进行更改,但只更改一次。我从来没有遇到过由于茧导致项目文件失败的问题

git子树谷歌回购我从未使用过这个,但它与子模块有类似的缺点——它只是关于源代码控制。您需要自己进行集成。

最新更新