如何在不重复Xcode 4项目的情况下从付费版本构建免费版本?

don*_*ile 10 iphone xcode conditional ios xcode4

我听说有传言说可以通过使用目标和条件编译指令来构建应用程序的不同变体而无需复制Xcode项目

IF !FREE_VERSION 
[self loadGreatFeature];
ELSE
[self loadBoringFeature];
Run Code Online (Sandbox Code Playgroud)

所以:

  • 如何设置Xcode 4以区分构建/存档项目的免费或付费版本?

  • 如何告诉Xcode 4在付费版本中包含一组图像和其他资源,而不是在免费版本中(反之亦然)?

  • 如何告诉Xcode 4构建免费的OR付费版本?(不想一直构建它们,因为这会降低开发速度)

  • 这种方法的注意事项是什么?

我知道重复Xcode项目有什么警告:一旦我修复了任何一个版本的bug,我必须在另一个版本中做同样的事情.同样需要进行改进和修改.

sjs*_*sjs 20

在Xcode中打开项目,然后在Project Navigator中选择顶级项目.您应该看到项目的目标列表.

为应用的免费版本创建新目标.一种简单的方法是按住Control键并单击与您想要的类似的当前目标并复制它.

选择新目标.在" 构建阶段"选项卡中,您可以控制将哪些源文件构建为此目标的一部分以及为其复制哪些资源.在" 构建设置"选项卡中,搜索预处理器宏并为所有构建配置添加新的,例如MYAPPLITE = 1.然后,您可以在代码中使用以下内容进行条件编译:

#ifdef MYAPPLITE
    [self loadBoringFeature];
#else
    [self loadGreatFeature];
#endif
Run Code Online (Sandbox Code Playgroud)

最后,从"产品"菜单中选择" 编辑方案... ".应该已经为您的新目标创建了一个新方案.如果需要,可以在" 管理方案"表中重命名.您可以在此处控制构建,运行,存档等新目标的特定设置.

要在构建免费版本或付费版本之间切换,只需更改活动方案即可.

唯一真正需要注意的是,您需要保持新目标的设置是最新的.