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

问题描述 投票:2回答:3

New Features部分,它指出:

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

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

如何才能生成仅在生成dSYM文件后启动的运行脚本阶段? 如何根据请求创建“shell脚本构建阶段的显式输入依赖项”?

ios xcode xcode10 dsym run-script
3个回答
4
投票

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

Build phase script is running before needed files are created in 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}

2
投票

对我来说,建议的解决方案没有用。在我的情况下,我必须知道何时生成dSYM中的Info.plist文件。虽然脚本在文件存在时启动,但其大小为零且脚本失败。

对我有用的是5s sleep作为我脚本中的第一行:

sleep 5

2
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.