【问题标题】:Sharing Xcode Library between users在用户之间共享 Xcode 库
【发布时间】:2014-06-16 03:20:06
【问题描述】:

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

我卡住的地方是如何同时使用 Xcode 和 Git 进行设置,这样当公共代码库的开发人员进行更改时,使用该库的开发人员将不会删除并重新添加 Xcode 项目,或失去他们的工作。

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

感谢您的建议和指点!

【问题讨论】:

  • 您尝试过制作框架吗? [请查看此链接。][1] [1]:stackoverflow.com/questions/4065052/…
  • 我们真的不想让这个项目使用框架,除非它是唯一/最简单的方法。
  • 您只想使用头文件和实现文件?或者,您想将其构建为二进制(一种框架)并使用?或者,它是应该与其他项目一起安装在 iDevice 中的应用程序吗?
  • 我们的大部分项目将依赖于这个 Xcode 项目中的代码,所以我们的想法是对于需要使用所有代码的任何内部应用程序,将 Xcode 项目添加到任何需要使用该源代码的项目。对于公共应用程序,我们计划从 Xcode 项目构建一个框架,以公开我们想要公开的内容。

标签: ios objective-c xcode git


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 感谢您对每个解决方案的精彩解释!我喜欢使用 Cocoapods 的想法,我看到很多项目都在使用它,但是修改 Xcode 项目可能会变得很麻烦。可能会先尝试子模块和静态库。再次感谢!
【解决方案2】:

我们共享公共项目/库的方式是使用私人Cocoapods。它不是纯 git,但 cocoapods 确实使用 git。您可以阅读有关如何设置私有 podspec 存储库的官方文档:http://guides.cocoapods.org/making/private-cocoapods.html

还有很多关于如何设置私有 podspec 存储库like this one 的可能更简单的解释@

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    • 2012-07-06
    • 1970-01-01
    相关资源
    最近更新 更多