0

我只想从一些更有经验的开发人员那里了解以下情况的正确设置。

我们正在从 App Store 构建 iOS 应用程序。各种应用程序的基本代码应该相同,因为功能是相同的。但是,每个都应该收到不同的预编译器信息(我知道通过 plist 文件很容易,所以没有问题)。现在,每个应用程序都应该有不同的资源。图像、声音等(目前我将所有资源放在不同的文件夹中,名称相同,因此我可以随时将其放入其中,应用程序会更改,但看起来……至少可以说脏了)。

我应该创建初始版本,然后创建新目标并复制所有内容吗?还是我们应该复制目标?那么如何指定不同的资源文件夹?

谢谢


@j_mcnally

您是否提出以下建议:

CORE_PROJECT
 |
 |-- APP 1 PROJECT
 |    |-- target -> free
 |    |-- target -> paid
 |
 |-- APP 2 PROJECT
 |    |-- target -> free
 |    |-- target -> paid
 ...

然后核心项目不应该有任何目标?只是共享资源?对我来说似乎合乎逻辑。还有其他意见吗?

4

2 回答 2

2

您真的希望这些应用程序有多相似?如果目标是让他们仅在某些配置上有所不同,那么我不希望维护重复的目标或项目。我相信不应该更改但其他开发人员和我必须尝试保持同步的冗余配置会导致引入不一致,这将导致错误并最终可能无意中分叉项目。

相反,我尝试使整个过程自动化,并尽可能避免创建重复的配置。我将添加一个运行脚本构建阶段作为构建过程的第一步,它在执行构建之前将适用于当前应用程序的资源集符号链接或复制到位置。这样,您可以允许环境变量选择应用程序使用的资源集。如果开发人员在从 xcode 中构建时想要一种方便的方法来设置和交换这些环境变量值,他们应该能够将非共享方案添加到他们的本地工作空间。

我发现这对于小的配置更改非常有效,例如切换应用程序以与开发/登台/生产后端系统进行通信,并且在处理一个开始构建多个的大型项目时,我错过了相同级别的一致性应用程序仅基于不同的资源集,但迅速分化为共享单一代码库的不兼容系统。

现在,如果您认为确实需要为这些不同的应用程序添加独特的行为,那么我建议为公共代码创建一个共享静态库构建目标,该代码可以包含在每个应用程序的应用程序构建目标中。将整个集群共享为工作空间,开发者只需选择合适的方案即可切换应用。这应该在共享代码和应用程​​序特定代码之间保持清晰的分离,而不会增加太多开销。随着应用程序的增长和稳定,您最终可能希望将静态库项目作为其他项目的共同依赖项分支到多个存储库中。这将增加在应用程序和共享库上工作的成本,但如果您必须谨慎地更改共享代码库,这可能是可取的。

于 2012-03-09T08:02:05.457 回答
1

您可以在项目中嵌入项目。因此您可以拥有一个核心项目,然后将其嵌入到您的父级更具体的项目中。这样,您应该能够引用相同的核心代码,但构建不同的目标。

于 2012-03-09T06:22:18.667 回答