1

我对 Xcode 有一个小问题,想知道是否有人以聪明的方式解决了这个问题?

设想:

  • 两名开发 iOS 应用程序的开发人员。
  • 托管在 GitHub 上的单个 Xcode 项目。
  • 我有三种配置:Debug、TestFlight 和 Release。
  • 至少对于发布版本,我希望将我们的 Web 服务 API 的主机名编译到应用程序中。

我在 API 包装器中有这样的代码:

#ifdef CONFIGURATION_Debug
   static NSString * const kAPIBaseURLString = @"http://10.10.10.41:8080/api";
#elif CONFIGURATION_TestFlight
   static NSString *const kAPIBaseURLString = @"http://9.9.9.9.eu-west1.compute.amazonaws.com:8080/api";
#elif CONFIGURATION_Release
   static NSString * const kAPIBaseURLString = @"http://some.production.server";
#else
   static NSString * const kAPIBaseURLString = @"http://error-crazy-configuration-must-be-set-in-xcode";
#endif

这一切都很好,但是,开发人员之间存在关于DEBUG字符串的 Git 之争。每个都指向我们自己的开发实验室,并且该文件不断地作为一个地址或下一个地址签入。它是一种痛苦。

我不想让 git "assume-nochanges" 因为在这个类中有重要的代码定期更改。

我曾考虑将主机名作为 arg 传递,但这也会导致 git 看到的项目结构发生变化。

关于如何让我们设置主机名而不需要 Xcode 或 git 的任何脑电波?

4

2 回答 2

3

在 Xcode 中使用方案。对于运行配置,添加一个环境变量:

APIBASEURLSTRING http://10.10.10.41:8080/api

对于 Release 配置,添加相同的环境变量:

APIBASEURLSTRING http://some.production.server

...以及其他构建配置的等等。

在管理方案下,确保未选中共享复选框。

在您的代码中,使用以下命令访问环境变量:

baseUrlString = [[[NSProcessInfo processInfo] environment] objectForKey:@"APIBASEURLSTRING"];

只要您不使用共享方案,所有用户都可以设置自己的环境变量/自定义端点。

于 2012-10-11T10:58:22.973 回答
1

使用名称而不是 IP 地址。

开发人员 #1的/etc/hosts文件包含以下条目:

10.10.10.4     mydevserver

开发人员 #2的/etc/hosts文件包含以下条目:

192.168.0.66   mydevserver

然后设置CONFIGURATION_Debug为:

#ifdef CONFIGURATION_Debug
   static NSString * const kAPIBaseURLString = @"http://mydevserver:8080/api";
....
于 2012-10-11T11:02:36.280 回答