Xcode:如何基于相同的源代码处理许多略有不同的目标/应用程序

Xcode:如何基于相同的源代码处理许多略有不同的目标/应用程序,xcode,targets,Xcode,Targets,对于我们公司的一款产品,我们需要生成稍有更改的iOS应用程序(不同的徽标,Info.plist中的设置稍有不同,等等);但基本上它们都基于相同的源代码 现在,我们开始获得一些牵引力,在主Xcode项目中有20-30个不同的方案和目标变得有点烦人——另外,让同事修改它是一件痛苦的事情,因为它往往会时不时地破坏一些东西 不幸的是,我不太熟悉Xcode的内部结构;但我很确定以前已经有人解决了这个问题 我想到了一些想法: 有一个单独的Xcode项目和。。。 。。。使用框架/库导入“基本代码” 。。。

对于我们公司的一款产品,我们需要生成稍有更改的iOS应用程序(不同的徽标,Info.plist中的设置稍有不同,等等);但基本上它们都基于相同的源代码

现在,我们开始获得一些牵引力,在主Xcode项目中有20-30个不同的方案和目标变得有点烦人——另外,让同事修改它是一件痛苦的事情,因为它往往会时不时地破坏一些东西

不幸的是,我不太熟悉Xcode的内部结构;但我很确定以前已经有人解决了这个问题

我想到了一些想法:

  • 有一个单独的Xcode项目和。。。
    • 。。。使用框架/库导入“基本代码”
    • 。。。将“基本代码”添加为项目(依赖项?)
不确定这里的最佳实践是什么;理想情况下,项目代码和客户应用程序目标的配置应明确分开。更理想的情况是,这将是一个可由同事维护的系统,而不会有意外破坏基本代码的风险


有什么想法/想法/建议吗?

这取决于用例。是否需要发布(归档)同步部署的目标?或者这些客户端定制是独立发布的吗?开发团队有多大

实际上,两种方法都只有几个选择

选项1

将产品作为单独的目标进行管理。这就是你现在正在做的事情。你可以设置它,这样建立一个目标就可以建立所有的目标,从而避免你自己的痛苦。这里的主要缺点是您单独管理图像/plist数据

这是我通常的处理方式。定制通常是一次性的,您可以指定不同的预编译头来改变某些功能差异

选项2

在CVS中将产品作为单独的分支进行管理。这可能有点让人头疼,但如果有更大的团队在代码库中工作,效果会更好。将功能代码保留在一个分支上。为每个产品维护一个独立的分支机构。根据需要将功能分支中的更改合并到产品分支中

选项3

将产品作为单独的子项目进行管理。这与选项1非常相似,因为您仍然需要单独维护设置,但优点是在更改项目文件的基础xml时,不太可能弄乱其他产品

要考虑的因素是开发团队的规模以及团队现有的工作流程。