ios - 在用户之间共享 Xcode 库

标签 ios objective-c xcode git

我正在寻找在多个应用程序的多个开发人员之间共享“通用”Xcode 项目的最佳方式。一名开发人员将负责“通用”Xcode 项目,而另一名开发人员将负责使用来自通用代码 Xcode 项目的源代码的项目。

我遇到的问题是如何同时使用 Xcode 和 Git 进行设置,以便当通用代码库的开发人员进行更改时,使用该库的开发人员将不会删除并重新添加 Xcode 项目,或丢掉工作。

我看过一些关于 Git 子模块的文档,但围绕该主题及其实用性存在很多争论。我们最好只拥有一个存储库,其中包含所有项目的所有代码,这样每个人都可以在同一个地方 checkin / checkout 吗?

感谢您的建议和指点!

最佳答案

软件开发没有“最佳方式”。任何问题总是有多种解决方案。诀窍是找出最适合您的解决方案。在他的案例中,有许多因素需要考虑 - 您的开发人员喜欢如何工作、他们拥有什么样的经验和背景、您希望如何管理代码等。

我认为您需要考虑一些解决方案。选择一个并尝试一下,但如果您发现它不起作用或修改它以满足您的需求,请不要害怕进行更改。

  1. 一个代码库。通常不被认为是最佳解决方案,因为它限制了在其他项目上重用代码的能力。在 XCode 中,您往往会以大量构建目标和高度复杂的构建而告终。这很快就会变得难以管理。也往往会使版本控制变得困难,并且会很快破坏事物。

  2. 多个存储库和静态库。对此有许多变体。存储库可以由 Git 独立管理,也可以使用子模块。我会认真考虑将代码分解到构建静态库的项目中。使用 XCode 工作区,您可以同时打开多个项目,并将它们安排为兄弟项目或嵌套子项目。这在很大程度上取决于您想要构建它们的内容和方式。使用 Git 子模块的优点是子模块可以有效地进行版本控制,这意味着对静态库项目进行更改不会破坏正在使用的所有内容。使用 Git 子模块的缺点是它们(恕我直言)不是 Git 中对用户最友好的部分,需要一些时间来适应。一个好的 Git 客户端在这方面最有用。 Sourcetree是免费的,但是(再次恕我直言)Tower比 Sourcetree 更易于使用和更好地处理子模块。

  3. 使用 Cocoapods . Cocoapods 就像在 Xcode 中使用 Maven 或 Ant。它使事情变得快速而容易地运行并自动处理依赖关系。然而,它也会与 XCode 项目文件混淆,通常需要手动干预,添加你可能不需要的额外编译,并且取决于你如何设置你的构建,可能会妨碍。弄清楚如何控制它播放项目文件的方式也需要一些时间。很多人喜欢 Cocoapods,因为它最初易于使用,并且不需要 Git 子模块所需的技术知识。从长远来看,我个人不确定将 Java 依赖项管理思想引入 Xcode 是否是一个好主意。

关于ios - 在用户之间共享 Xcode 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23377333/

相关文章:

ios - 即使表为空,SQLite step() 也会返回 SQLITE_ROW

ios - UISearchController "manual"搜索 UI 故障

objective-c - 如何获取用户当前的UITextField的属性名称作为字符串?

xcode - 如何将构建的项目发送给其他人,以便他们可以使用其开发者帐户将其提交到App Store?

ios - 运行调试器时如何阻止Xcode 6显示反汇编

ios - 在没有数据库的情况下通过wifi传输数据

ios - Google Analytics 跟踪 tableView IOS 中的点击次数?

objective-c - 我更改 UIBUtton 背景图像的方式有什么问题?

ios - 除了使用初始化程序之外,如何在 10 秒后停止 NSURLRequest 超时?

ios - 不使用代码将 xib UIView 添加到 Storyboard View Controller