对于我们公司的一款产品,我们需要生成略有变化的iOS应用程序(不同的徽标、Info.plist中的设置略有不同等);但基本上它们都基于相同的源代码。
现在我们开始获得一些吸引力,在主要的Xcode项目中有大约20-30个不同的方案和目标会变得有点烦人——此外,让同事修改它也很痛苦,因为它往往会时不时地破坏事情。
不幸的是,我对Xcode的内心并不太熟悉;但我敢肯定其他人以前已经解决了这个问题。
我想到了一些想法:
- 有一个单独的Xcode项目和。。。
- 。。。使用Framework/Library导入"基本代码">
- 。。。将"基本代码"添加为项目(Dependencies?)
不确定这里的最佳实践是什么;理想情况下,项目代码和客户应用程序目标的配置将有一个明确的分离。更理想的情况是,这将是一个可由同事维护的,而不会有意外破坏基本代码的风险。
有什么想法/想法/建议吗?
这取决于用例。是否需要发布(存档)同步部署的目标?还是这些客户端自定义是独立发布的?开发团队有多大?
无论哪种方式,实际上都只有几个选择。
选项1
将产品作为单独的目标进行管理。这基本上就是你现在正在做的事情。你可以设置它,这样建立一个目标就可以建立所有目标,为自己省去一些痛苦。这里的主要缺点是您单独管理图像/plist数据。
这是我通常处理它的方式。自定义通常是一次性的,你可以指定一个不同的预编译头来改变一些功能差异。
选项2
在CVS中将产品作为单独的分支进行管理。这可能有点令人头疼,但如果有一个更大的团队在代码库中工作,效果会更好。将功能代码保留在一个分支上。为每个产品维护一个独立的分支机构。根据需要将功能分支中的更改合并到产品分支中。
选项3
将产品作为单独的子项目进行管理。这与选项1非常相似,因为您仍然需要单独维护设置,但优点是在更改项目文件的底层xml时,不太可能弄乱其他产品。
需要考虑的因素是开发团队的规模以及团队现有的工作流程。