Xcode 从运行脚本阶段获取当前方案名称

Xcode 从运行脚本阶段获取当前方案名称,xcode,Xcode,有没有办法从运行脚本阶段获取当前方案 我尝试了$(SCHEME\u NAME),但它不存在。我找不到要使用的环境变量,因此我必须制定一个解决方案:在构建预操作中将SCHEME名称写入磁盘,然后在运行脚本阶段将其读回 对于您感兴趣的每个方案,请转到“编辑方案”并添加具有以下代码的脚本: rm -rf ${INTERMEDIATES_OUTPUT_DIR} mkdir -p ${INTERMEDIATES_OUTPUT_DIR} echo MY_SCHEME_NAME > ${SCHEME_F

有没有办法从运行脚本阶段获取当前方案


我尝试了
$(SCHEME\u NAME)
,但它不存在。

我找不到要使用的环境变量,因此我必须制定一个解决方案:在构建预操作中将SCHEME名称写入磁盘,然后在运行脚本阶段将其读回

对于您感兴趣的每个方案,请转到“编辑方案”并添加具有以下代码的脚本:

rm -rf ${INTERMEDIATES_OUTPUT_DIR}
mkdir -p ${INTERMEDIATES_OUTPUT_DIR}
echo MY_SCHEME_NAME > ${SCHEME_FILE}

接下来,转到构建目标的“构建设置”并添加两个“用户定义的设置”:

打开“运行脚本”并添加以下内容:

SCHEME_NAME=`cat ${SCHEME_FILE}`
请确保将中间体生成目录添加到.gitignore文件中


显然,您可以通过硬编码文件名来简化这一点,但这一点更为健壮(我们还有其他东西最终也会出现在中间目录中)。

您可以将方案名称写入
info.plist
文件,并在运行脚本阶段,在“编辑方案”菜单中读取它,选择构建->预操作并添加以下脚本:

/usr/libexec/PlistBuddy -c "Set :SchemeName \"$SCHEME_NAME\"" "$INFOPLIST_FILE"
然后在
info.plist
中添加字符串类型的键
SchemeName
,其初始值为空

最后,在运行脚本阶段添加以下内容:

SCHEME_NAME=$(/usr/libexec/PlistBuddy -c "Print SchemeName" "$INFOPLIST_FILE")


中间产品\u OUTPUT\u DIR似乎不适合构建快速预览,我也希望对其进行定制。最后,我使用
defaults write
做了类似的事情,我发现它在所有情况下都有效,不涉及文件的创建

预构建:

默认写入com.apple.dt.Xcode LastBuildScheme“MySchemeName”`
生成脚本:

[[$(默认为com.apple.dt.Xcode LastBuildScheme)=“MySchemeName”]&&echo“Scheme”| | echo“Not Scheme”

在提交增强请求。非常好!!!我必须指出,对于像我这样的bash黑客来说,我的SCHEME\u文件路径中有空格,所以上面的行应该是SCHEME\u NAME=
cat“${SCHEME\u NAME}”
。。。这些是反勾号,不是撇号!这也适用于顶部“${mediates\u OUTPUT\u DIR}”和“${SCHEME\u FILE}”@horseshoe7我收到了这个问题。。你们能帮我显示所有问题吗?错误:“myproject.xcworkspace”中不存在Scheme“Scheme\u NAME”。呃,对不起,我的评论应该跟在答案后面,但请确保用引号将${Scheme\u FILE}括起来,这样它会自动转义路径名中的空格。
SCHEME_NAME=$(/usr/libexec/PlistBuddy -c "Print SchemeName" "$INFOPLIST_FILE")