我正在寻求有关启动新开发项目以及使用什么技术的建议。
我们正在开始构建一个企业级 iOS8 应用程序,该应用程序将具有多个模型(可能是框架)。理想情况下,我希望代码的某些部分(比如一些算法、数据连接部分,也许还有一些特定的 UI 组件)各自位于各自的 iOS 框架中,以便可以跨系统进行救援。项目。
此外,对于重用问题,我希望将每个单独的组件存储在单独的 git 存档中。这使我有几个选择
- gitSubModule
- CocoaPods
- 迦太基
- git 子树
- 谷歌存储库
我使用过子模块,但发现它们很笨拙而且一团糟。
尽管这可能是那些被宣布无效的主观问题之一,但我希望人们能够分享他们使用这些不同方法的直接观察结果
我想根据以下标准选择一种方法
一个模块的更新容易暴露给项目的其余部分
- 例如在 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/