Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.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
Objective c 执行22种不同构建的最有效方法_Objective C_Xcode_Macos_Xcodebuild - Fatal编程技术网

Objective c 执行22种不同构建的最有效方法

Objective c 执行22种不同构建的最有效方法,objective-c,xcode,macos,xcodebuild,Objective C,Xcode,Macos,Xcodebuild,我即将完成我的第一个相对简单的Xcode项目(一个自定义安装程序),我需要进行22次构建。是的,那不是打字错误!每个版本的不同之处在于产品名称、bundle Resources文件夹中的一个源文件以及一个表示软件是否为试用版的变量 从我到目前为止读到的内容来看,当只有几个构建时,复制现有目标似乎是一种方法,但对于22个构建来说,这仍然是正确的吗?这似乎是一个可怕的工作很多。我想到的是一种更改产品名称、复制到Resources文件夹的源文件和试用模式的方法。但是我被卡住了 谢谢我可能会编写一个脚本

我即将完成我的第一个相对简单的Xcode项目(一个自定义安装程序),我需要进行22次构建。是的,那不是打字错误!每个版本的不同之处在于产品名称、bundle Resources文件夹中的一个源文件以及一个表示软件是否为试用版的变量

从我到目前为止读到的内容来看,当只有几个构建时,复制现有目标似乎是一种方法,但对于22个构建来说,这仍然是正确的吗?这似乎是一个可怕的工作很多。我想到的是一种更改产品名称、复制到Resources文件夹的源文件和试用模式的方法。但是我被卡住了


谢谢

我可能会编写一个脚本,使用.xcodeproj模板和
sed
来生成所有必要的组合。

您可能想检查一下如何维护这么多的构建


编写脚本当然可以完成任务,但是一旦项目增长到大量文件,或者如果您发现自己更改了构建数量,那么更改脚本可能会很麻烦。CMake将允许您组织这些脚本,因此将来至少可以更轻松地进行修改。

我的直觉反应是,只有一个源文件不同的22个不同版本是错误的


这个问题不能扭转吗?在一个版本中包含应用程序的所有22个不同版本,并在.app文件夹中提供22个不同的密钥/许可证文件,每个文件解锁22个版本中的一个。

我过去实现这一点的一种方法是使用本地化。当您使用
NSLocalizedString
风格的宏时,其中一些宏能够指定一个表名(即,与默认值不同的字符串文件)。然后,每当我需要一个不同品牌的构建时,我就创建一个新的.strings文件,其中包含适当的键值对


然后,我有一个构建目标,该目标使用默认值构建代码,第二个目标使用构建的代码并将适当的.strings文件复制到其适当的位置。这非常有效,允许我们管理许多不同的构建风格。

不幸的是,没有。这些是不可复制保护的插件,因此它们需要为单独下载而单独构建。插件-构建一个应用程序并提供不同的插件,每个插件都包含所需的功能。虽然这几乎又带来了22个版本的问题。。。