Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从一个Xcode项目高效地构建两个版本的Iphone应用程序?_Iphone_Xcode_Version Control - Fatal编程技术网

从一个Xcode项目高效地构建两个版本的Iphone应用程序?

从一个Xcode项目高效地构建两个版本的Iphone应用程序?,iphone,xcode,version-control,Iphone,Xcode,Version Control,我想制作我的应用程序的付费和免费版本。我想构建一些东西,这样我就可以用尽可能少的更改构建一个或另一个版本。就源代码而言,这很容易通过在某个地方有一个BOOL常量isFreeVersion并根据需要引用它来实现 但是我应该如何设置其他一切?显然,应用程序ID必须更改,而这又需要更改XCode中的一些构建设置。将其保持在最低限度的最佳方法是什么?一般来说,就版本控制而言,我不推荐使用,除非构建两个版本的影响意味着两组源之间的重要代码更改 如果只能有一组源(使用BOOL常量),则意味着必须通过构建脚本

我想制作我的应用程序的付费和免费版本。我想构建一些东西,这样我就可以用尽可能少的更改构建一个或另一个版本。就源代码而言,这很容易通过在某个地方有一个BOOL常量isFreeVersion并根据需要引用它来实现


但是我应该如何设置其他一切?显然,应用程序ID必须更改,而这又需要更改XCode中的一些构建设置。将其保持在最低限度的最佳方法是什么?

一般来说,就版本控制而言,我不推荐使用,除非构建两个版本的影响意味着两组源之间的重要代码更改

如果只能有一组源(使用
BOOL
常量),则意味着必须通过构建脚本管理其余的源,这将:

  • 获取一个参数以了解它是否必须构建可执行文件的免费版本或付费版本(无参数表示它同时构建这两个版本)
  • 根据必须生成的版本,使用一种或另一种XCode生成设置

您可以使用预处理器标志(在Xcode构建设置中)在两者之间切换。该标志可以通过使用简单的预处理器指令(例如#if IS _FREE _VERSION…#endif)在源代码中使用,方式类似于if语句。这将帮助您避免生成脚本


这种方法的缺点是,默认情况下,每次构建时,最后一个构建产品都会被覆盖。

这似乎是这个问题的重复: