背景
我正在开发一个连接到服务器的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帖子。
您如何在项目中执行此操作?
使用后门或某些文件的唯一解决方案是改变,只是不要意外地检查?
答案 0 :(得分:0)
作为更新,我找到了解决问题的解决方案。我正在使用https://github.com/xslim/mobileDeviceManager和签入的脚本。开发人员可以创建自定义配置并将其复制到文档目录。现在我们继续检查生产并对我们的custum配置文件进行运行时检查。
以下是工具用法的示例:
$ mobileDeviceManager -o copy -app“com.domain.MyApp”-from~ / .myAppConfig / app_override.plist
这样开发人员可以将自定义配置保留在其主目录中(不受源代码管理),而不必担心意外签入。我们已经将这样的流程用于其他桌面和Android应用程序,因此这非常适合我们的流程。这样做的另一个好处是,如果测试人员设备出现故障,我们可以将其指向具有额外日志记录的自定义调试服务器,以简化调试过程,而无需在内部测试期间将新二进制文件部署到该设备。
我希望这可以帮助别人。