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

时间:2015-02-25 12:02:36

标签: ios git

我正在寻找有关启动新开发项目的建议,作为使用何种技术。

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

此外,对于重复使用问题,我希望将每个组件存储在单独的git存档中。这引出了一些选择

  1. gitSubModule
  2. 的CocoaPods
  3. 迦太基
  4. git subTree
  5. google repo
  6. 我使用过子模块,发现它们很笨拙而且很乱。

    虽然这可能是那些被认为无效的主观问题之一,但我希望人们可以通过使用这些不同的方法分享他们的直接观察

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

    • 一个模块的更新轻松暴露给项目的其余部分

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

      • 使用GitSubmoduels时,我每次尝试更新其中一个潜艇时都设法破坏了项目

    (我希望这个问题不会被主观关闭)

1 个答案:

答案 0 :(得分:1)

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

Submobules 只是源代码管理。它们无法为您提供方便/自动/方式来管理子项目的更新和版本控制。 我在职业生涯早期使用git子模块来管理依赖项。我和他们没有什么大问题,但我必须注意我从未回复过子模块。特别是我发现submodules有点尴尬。他们可以处理来源但这就是全部。如果您在主应用程序中使用的子项目将被更新并添加新文件(或删除现有文件),您将需要在主Xcode项目中跟踪这些更改 - 您将需要添加新文件并删除已删除的文件。

至于 CocoaPods :我在过去的2。5年里一直在使用它们,它对我来说非常适合。我认为CocoaPods足够成熟以便开发。主要优点:

  • 他们实际上库集成到您的主项目中 - 您唯一需要的是运行pod install(或update)并享受配置的工作区。
  • 他们允许您为子项目使用版本控制 - 您可以选择特定版本,您可以使用comarison运算符来选择早于xxx的版本版本不早于xxx 等等,您可以将它们配置为在repo中选择最新的可用提交
  • 他们管理权利 - 你可以使用另一个cocoapods作为你的依赖
  • 他们支持组件 - 您可以将单个pod分成可选组件
  • 他们支持私有存储库 - 您可能希望将您的企业组件窗格保留为您自己的规格存储库

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

  • cocoapods集成过程对主项目文件进行更改 - 但只进行一次。由于cocoapods,我从未在项目文件中出现过问题。

git subTree google repo 我从来没有使用它,但它与子模块有类似的缺点 - 它只是关于源代码控制。你需要自己进行集成。