ios - 命令 PhaseScriptExecution 因非零退出代码 Xcode 11(BuildPhase 脚本)而失败
问题描述
我创建了一个自定义通用框架,我需要将此脚本添加到其构建阶段,以便通用框架将删除未使用的架构。如果我打算在应用程序中使用应用程序商店,这是必要的。
但我收到编译错误(命令 PhaseScriptExecution 失败,退出代码为非零):
脚本:
# Type a script or drag a script file from your workspace to insert its path.
FRAMEWORK="TestFramework"
FRAMEWORK_EXECUTABLE_PATH="${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/$FRAMEWORK.framework/$FRAMEWORK"
EXTRACTED_ARCHS=()
for ARCH in $ARCHS
do
lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
done
lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRAFRAMEWORK="TestFramework"
FRAMEWORK_EXECUTABLE_PATH="${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/$FRAMEWORK.framework/$FRAMEWORK"
EXTRACTED_ARCHS=()
for ARCH in $ARCHS
do
lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
done
lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"
rm "${EXTRACTED_ARCHS[@]}"
rm "$FRAMEWORK_EXECUTABLE_PATH"
mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"CTED_ARCHS[@]}"
rm "${EXTRACTED_ARCHS[@]}"
rm "$FRAMEWORK_EXECUTABLE_PATH"
mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"
这来自此处的教程: 在 Xcode 10.2 和 iOS 12 中编写自定义通用框架
问题可能只是一个不正确的字符串或一个不应该出现的空格,但我不知道。
调查结果:我知道它与 for 循环或其中的某些东西有关,因为当我删除 for 循环并且它的内容/嵌套代码时,错误消失了。
重现:要重现错误,您可以简单地制作一个虚拟 Xcode 项目,然后选择名为的项目选项卡 → yourProject.xcodeproj,选择目标 → 项目名称 → 选择构建阶段 → 按“+” → 新建运行脚本阶段 → 将脚本命名为“删除未使用的架构脚本” → 最后复制并粘贴代码。
解决方案
for 循环可能是这里的罪魁祸首。他们可以捕获发生的任何退出代码。我在这方面遇到了类似的问题。
- 改变你的 for 循环,
- 使用操作切换到 while 循环
<<<
::https ://stackoverflow.com/a/16854326/4970749 - 或保持循环查看答案:https ://unix.stackexchange.com/a/197183
- 使用操作切换到 while 循环
- 确保您没有获得退出代码,并且如果您将其传递给外部变量。见这里:https ://stackoverflow.com/a/6871917/4970749
推荐阅读
- c - 非常昏昏欲睡的分析器将单纯的变量混淆为函数,以及其他问题
- typescript - 出现错误:错误:执行“protractor ./conf.ts --suite homepage”时找不到模块'src/core/configurations/configFunctions
- reactjs - 在按钮上打开相机点击反应原生博览会
- ios - 如果他们不是服务工作者,pwa 是否使用浏览器缓存
- python - 在写入文件之前将内容保存在内存中
- html - url 中的 Slash(/) 返回 500 服务器错误,如何重定向?
- postgresql - 在 pgAdmin 4 中创建触发器函数
- oracle - 在 oracle 中使用 CTE 内的变量时遇到错误
- android - 如何在 kotlin 中编写此 Richpath 代码?
- node.js - 使用节点 12.16.3、npm 6.14.4 和 webpack 4.43.0 构建 JS 应用程序时出错