在使用 Xcode 10 生成 dSYM 后运行脚本阶段(构建时)

Mao*_*eli 7 xcode ios run-script dsym xcode10

新功能部分,它指出:

  • 在新的构建系统中,shell 脚本不能依赖未在其他构建阶段(例如,Info.plist 文件或 .dSYM 文件)中列出的构建工件的状态。添加脚本构建阶段依赖的文件作为显式输入对 shell 脚本构建阶段的依赖。(40852184)

在以前的 Xcode 中,脚本执行成功,但现在可以在 dSYM 文件大小为 0 时执行。

如何让运行脚本阶段仅生成 dSYM 文件启动?
如何按照他们的要求创建“对 shell 脚本构建阶段的显式输入依赖项”?

Roi*_*Tal 13

可以在这里找到类似的问题:

在 Xcode 10 中创建所需文件之前运行构建阶段脚本

您需要将 dSYM 添加为运行脚本阶段的输入文件依赖项: D

dSYM 默认位置是 ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}

您可以使用一个简短的脚本来测试它并观察其输出:

#!/bin/sh

if [ ! -d ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME} ]; then
    echo "Couldn't find dsym file"
    exit 1
fi

stat -x ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}
Run Code Online (Sandbox Code Playgroud)


vas*_*opa 5

Roi Tai 的回答几乎是正确的。仅指定${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}dSYMs 文件夹,而不是 dSYM 文件本身。

实际上,我完全解决了这个问题,而无需在脚本中使用睡眠。输入文件路径必须如下:

${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}

我在构建阶段尝试将 dSYM 上传到 Sentry 时遇到了此问题。当指定这个完整的文件路径时,脚本在执行之前等待 dSYM 完全生成 - 不需要睡眠调用!