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

标签 ios git

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

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

此外,对于重用问题,我希望将每个单独的组件存储在单独的 git 存档中。这使我有几个选择

  1. gitSubModule
  2. CocoaPods
  3. 迦太基
  4. git 子树
  5. 谷歌存储库

我使用过子模块,但发现它们很笨拙而且一团糟。

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

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

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

    • 例如在 CocoaPods 中,我相信您可以指向 git 存储库而不是特定版本
  • 更新简单并且不会破坏一切

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

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

最佳答案

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

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

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

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

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

  • cocoapods 集成过程对您的主项目文件进行更改 - 但仅一次。由于 cocoapods,我从未遇到过项目文件失败的问题。

git subTree, google repo 我从未使用过它,但它与子模块有类似的缺点 - 它仅与源代码控制有关。您需要自己进行集成。

关于ios - 在 ios 中开发多模块(框架)项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28718552/

相关文章:

git - hg heads/hg parents 的 git 等价物是什么?

git - Mercurial 中的自定义修订属性?

Git 终端语言在 'git checkout' 后更改为另一个分支

ios - SecondViewController 的prepareForSegue() 和 viewDidLoad()

ios - 从类方法中获取对 sharedInstance 的访问

ios - 在 [self.window makeKeyAndVisible] 崩溃;

git - 在 Git 中生成特定提交的差异文件

git - 删除一个分支,包括它的提交

ios - 如何在ios模拟器中禁用ip https验证?

ios - Xcode:将 TableView 添加到自定义单元格中