【问题标题】:Efficiently build two versions of an Iphone app from a single Xcode project?从一个 Xcode 项目高效地构建两个版本的 Iphone 应用程序?
【发布时间】:2011-01-25 17:52:30
【问题描述】:
我想制作我的应用的付费和免费版本。我想构建事物,以便我可以构建一个版本或另一个版本,并且尽可能少地进行更改。就源代码而言,这很容易通过在某处使用 BOOL 常量 isFreeVersion 并在需要时引用它来实现。
但是我应该如何设置其他所有内容?显然 App ID 必须改变,而这反过来又需要改变 XCode 中的一些构建设置。将其降至最低的最佳方法是什么?
【问题讨论】:
标签:
iphone
xcode
version-control
【解决方案1】:
您可以使用预处理器标志(在您的 Xcode 构建设置中)在两者之间切换。可以使用简单的预处理器指令(例如 #if IS_FREE_VERSION ... #endif)以类似于 if 语句的方式在源代码中使用该标志。这将帮助您避免构建脚本。
这种方法的缺点是,默认情况下,每次构建时,最后一个构建产品都会被覆盖。
【解决方案2】:
就一般的版本控制而言,我不推荐using branches,除非构建两个版本的影响意味着两组源之间的重要代码更改。
如果您只能拥有一组源(使用您的 BOOL 常量),则意味着其余部分必须通过构建脚本进行管理,这将:
- 带一个参数来知道它是否必须构建可执行文件的免费版本或付费版本(没有参数意味着它会同时构建)
- 使用一种或多种 XCode 构建设置,具体取决于它必须构建的版本。