我想从一些更有经验的开发人员那里了解到以下情况应该采取的正确设置。
我们正在从App Store构建iOS应用程序。对于各种应用程序,基本代码应该相同,因为功能是相同的。但是,每个人都应该收到不同的预编译器信息(我知道通过plist文件很容易,所以没有问题)。现在,每个应用程序都应该有不同的资源。图像,声音等等(目前我拥有不同文件夹中的所有资源,命名相同,所以我可以随时将其删除,应用程序将更改,但似乎......肮脏至少说)。
我应该创建初始版本,然后创建新目标并复制所有内容吗?或者我们应该复制目标?那我怎么指定不同的资源文件夹呢?
由于
@j_mcnally
您是否建议如下:
CORE_PROJECT
|
|-- APP 1 PROJECT
| |-- target -> free
| |-- target -> paid
|
|-- APP 2 PROJECT
| |-- target -> free
| |-- target -> paid
...
然后CORE项目应该没有任何目标?只是共享来源?对我来说似乎很合乎逻辑。还有其他意见吗?
答案 0 :(得分:2)
您真的打算使用这些应用程序有多相似?如果目标是他们只在一些配置上有所不同,那么我宁愿不保留重复的目标或项目。我认为冗余的配置不应该改变,但其他开发人员和我必须试图保持同步的是邀请引入不一致,这将导致错误,并最终可能无意中分叉项目。
相反,我尝试自动化整个过程,并尽可能避免创建重复的配置。我将添加一个运行脚本构建阶段作为构建过程的第一步,在执行构建之前将适合当前应用程序的资源集符号链接或复制到位置。这样,您可以允许环境变量选择应用程序使用的资源集。开发人员应该能够将非共享方案添加到其本地工作区,如果他们想要在xcode中构建时设置和交换这些环境变量值的便捷方式。
我发现这可以很好地用于小配置更改,例如切换应用程序以与开发/暂存/生产后端系统进行通信,并且在处理大型项目时我错过了相同级别的一致性仅基于不同的资源集构建多个应用程序,但这些应用程序迅速分散为共享单个代码库的不兼容系统。
现在,如果您认为确实需要为这些不同的应用程序添加独特的行为,那么我建议为公共代码创建一个共享静态库构建目标,该目标可以包含在每个应用程序的应用程序构建目标中。将整个群集共享为工作空间,开发人员只需选择适当的方案即可切换应用程序。这应该保持共享和应用程序特定代码之间的清晰分离,而不会增加太多开销 随着应用程序的增长和稳定,您最终可能希望将静态库项目作为其他库的共同依赖关系分支到多个存储库。这将为应用程序和共享库带来成本,但如果您必须谨慎对此共享代码库进行更改,则可能需要这样做。多个存储库还允许每个应用程序锁定到共享库的特定修订版,并在接受新更改时进行控制,具体取决于您可以看作是好还是坏的过程。
答案 1 :(得分:1)
您可以在项目中嵌入项目。所以你可以拥有一个核心项目,然后将它嵌入到你的父项更具体的项目中。这样你就可以引用相同的核心代码,但是可以构建不同的目标。