3

所以我正在编写从命令行运行的自动化测试来测试我的 iOS 应用程序的 UI。我有 bash 脚本可以清理和构建项目并运行我的 UI 自动化测试。

问题是,我希望命令行脚本能够更改我的 Xcode 项目中的 C 标志,以确定我的应用程序指向哪个服务器。例如:

./run-test -target "Debug-Server"

将 C-Flag SERVER_ADDRESS 的值更改为 DEBUG_SERVER,同时:

./run-test -target "QA-Server"

将 C-Flag SERVER_ADDRESS 的值更改为 QA_SERVER

为了做到这一点,我计划创建一个 .xcconfig 文件,该文件被输入到 xcodebuild 中,它将在我的代码中设置 C 标志以指向正确的服务器。像这样的东西:

xcodebuild -target <TARGET_NAME> -configuration Debug-QA.xcconfig -sdk "$DEVICE_SLUG""$CURRENT_SDK" DSTROOT=. clean build

我真的一点也不熟悉 .xcconfig 文件,所以我对它们有一些疑问。

  1. 我是否必须在我的 .xcconfig 文件中描述每个构建设置?还是 Xcode 使用某种“默认”值?
  2. 有没有更好的方法来做到这一点?
4

1 回答 1

3

我想通了,使用了 .xcconfig 和 #ifdef 语句的组合:

在我声明服务器的配置文件中:

#ifdef USE_DEV
#define SERVER_ADDRESS   DEV_SERVER_ADDRESS   //USED IN AUTOMATED TESTING DEBUG SERVERS

#elif defined USE_QA
#define SERVER_ADDRESS   QA_ADDRESSS          //USED IN AUTOMATED TESTING STAGING SERVERS 

#elif defined USE_LIVE
#define SERVER_ADDRESS   LIVE_SERVER_ADDRESS  //USED IN AUTOMATED TESTING LIVE SERVERS

#else
#define SERVER_ADDRESS   DEV_SERVER_ADDRESS   //DEFAULT VALUES
#endif

然后我使用了三个 .xcconfig 文件,其中说明了以下内容:

开发者.xcconfig:

GCC_PREPROCESSOR_DEFINITIONS = USE_DEV

QA.xcconfig:

GCC_PREPROCESSOR_DEFINITIONS = USE_QA

LIVE.xcconfig:

GCC_PREPROCESSOR_DEFINITIONS = USE_LIVE
于 2012-11-29T02:18:06.413 回答