如何在运行某个方案时不运行脚本?

时间:2014-11-10 23:03:34

标签: ios xcode bash environment-variables run-script

我将以下脚本保存为项目目标中的运行脚本:

git_output=$(git status | grep "nothing to commit, working directory clean")
if [[ -z "$git_output" ]]; then
    xcrun agvtool next-version -all
fi

检查git repo以查看是否有任何挂起的更改,如果是,则增加项目的内部版本号。一切正常。

问题在于,在运行KIF测试时,更改内部版本号会因运行KIF测试而混乱,因此它永远不会最终启动模拟器并运行。我已经验证,如果没有出现这样的内部版本号增量,KIF测试将运行正常。

最简单的方法是在Xcode中指定在运行某个方案时不运行给定的脚本。另外,如果我可以在脚本本身内查询正在运行哪个方案,那将完成同样的事情。但我不知道该怎么做。

1 个答案:

答案 0 :(得分:1)

您可以添加自己在计划中选择的“测试”构建配置。对于此构建配置,您可以定义自己的GCC_PREPROCESSOR_DEFINITIONS

然后,您可以在脚本中使用{GCC_PREPROCESSOR_DEFINITIONS}

访问这些内容
needle="NO_BUILD=1"
haystack="${GCC_PREPROCESSOR_DEFINITIONS}"
if [[ "$haystack" =~ "$needle" ]]; then
  echo "Test Build. Do not increase build number." >> ~/Desktop/Test.txt
else
  echo "Not a test build" >> ~/Desktop/Test.txt
fi

要仅针对特定方案设置此构建设置,请按照以下步骤操作。

  1. 创建配置。
  2. Create a Configuration

    1. 设置此配置的构建设置。
    2. Set the build settings for this configuration

      1. 编辑您的方案并选择配置。
      2. Choose the configuration for the scheme