Xcode环境变量和命令行参数

时间:2014-01-31 17:43:52

标签: ios xcode5

背景

我正在开发一个连接到服务器的iOS应用程序。我们有一个开发人员团队,他们使用唯一的地址运行自己的服务器进行调试。我们的源代码控制规则是只检查“生产网址”。

在Android中,我们有一个非常有效的解决方案。此解决方案在iOS中无效。

我尝试过什么

在Build Scheme中设置“命令行参数”或“环境变量”。这个问题是将这些文件放入“* .xcproject”文件中,该文件将被检入并导致合并冲突。如果它可以设置在用户级别,那就没问题,因为我们.gitignore xcuserdata。

我还尝试引用一个未检入的“MyConfig.h”文件。但如果它不存在,则不会构建项目。

我想做什么

如果开发人员想要指向其他服务器,他们会在他们的mac上设置一个环境变量。像“export MY_SERVER =”http://domain.com/api/“之类的东西。在项目文件中我们会添加环境或命令行参数,基本上是”MY_SERVER = $(MY_SERVER)“。

不幸的是我无法弄清楚如何让XCode解析我的OSX机器上的变量。似乎环境变量仅在设备上解析。命令行参数似乎是从字面上理解的。

研究我已经完成了

http://qualitycoding.org/production-url/ - 并没有真正解决真正的问题

http://nshipster.com/launch-arguments-and-environment-variables/

Google,Apples开发人员论坛和Stackoverflow帖子。

您如何在项目中执行此操作?

使用后门或某些文件的唯一解决方案是改变,只是不要意外地检查?

1 个答案:

答案 0 :(得分:0)

作为更新,我找到了解决问题的解决方案。我正在使用https://github.com/xslim/mobileDeviceManager和签入的脚本。开发人员可以创建自定义配置并将其复制到文档目录。现在我们继续检查生产并对我们的custum配置文件进行运行时检查。

以下是工具用法的示例:

$ mobileDeviceManager -o copy -app“com.domain.MyApp”-from~ / .myAppConfig / app_override.plist

这样开发人员可以将自定义配置保留在其主目录中(不受源代码管理),而不必担心意外签入。我们已经将这样的流程用于其他桌面和Android应用程序,因此这非常适合我们的流程。这样做的另一个好处是,如果测试人员设备出现故障,我们可以将其指向具有额外日志记录的自定义调试服务器,以简化调试过程,而无需在内部测试期间将新二进制文件部署到该设备。

我希望这可以帮助别人。