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")