shell xcodebuild存档失败,xcode存档成功

z18hc3ub  于 2023-05-01  发布在  Shell
关注(0)|答案(2)|浏览(137)

我试图使用Xcode的shell脚本和命令行工具自动化提交到iTunesConnect的过程。到目前为止,我已经成功地实现了过程中的每一步,除了第一步:存档。
脚本中的代码:

echo "Attempting to build target: ${TARGET_PRODUCT}"
cd $ENGINE_PATH
# Clean
/usr/bin/xcodebuild clean -project projName.xcodeproj -target "${TARGET_PRODUCT}" -configuration Release
# Build and Archive
/usr/bin/xcodebuild archive -project projName.xcodeproj -scheme "${TARGET_PRODUCT}" -configuration Release -archivePath "${TARGET_PRODUCT}".xcarchive

到目前为止,archive命令还无法成功创建归档。此命令的唯一输出是:** ARCHIVE FAILED ** .
如果我只是尝试构建,而不是归档,我会得到:** BUILD SUCCEEDED **
归档文件确实在预期的位置生成了一个文件,并且“Show Package Contents”扩展为显示与Xcode中生成的归档文件相同的目录结构,但有一个例外,Xcode中创建的归档文件包括一个名为SCMBlueprint的附加文件夹。
我在其他论坛帖子中看到,归档问题通常是由于代码签名或配置文件问题。但是,我不认为这在本例中是一个问题,因为在构建和归档过程中,所使用的代码签名标识和供应配置文件是在控制台中输出的。失败的存档使用的代码签名标识和配置文件与成功的生成使用的相同。此外,我使用Xcode生成了一个归档文件,并在该归档文件中查找embedded.mobileprovision文件。我将其与xcodebuild生成的失败归档文件进行了比较,可以看出它们是相同的。
我已经在网上其他地方寻找任何导致xcodebuild归档失败的建议,但到目前为止,我被难倒了!任何帮助是非常感谢!

mbjcgjjk

mbjcgjjk1#

请检查您在存档过程中是否没有任何错误。另外,请比较Xcode和命令行输出之间的日志,它可能会帮助您了解哪一步编译失败。
我也有同样的问题。存档失败,没有任何特定原因,而。产生了Xcarchive。我查看了xcode的构建日志,注意到它以Build finished with errors消息结束。尽管这个错误组织者显示存档,我能够从中导出IPA。
当我审查,我发现有一个存档错误造成的破坏PNG文件,这不能在存档过程中压缩。错误不是致命错误,因此仍在生成存档。当我修复PNG文件时,一切都开始顺利编译,没有任何问题。

r1zhe5dt

r1zhe5dt2#

这只是发生在我身上,这是一个不同的问题,而不是与PNG(也许下面只是更一般的情况下,虽然):我有一个自定义构建阶段,它将错误输出到stderr,但是在本例中,构建阶段没有返回与0不同的退出代码(使用来自Xcode 9.3 (9E145)xcodebuild)。
构建阶段类似于:

find "${SRCROOT}/Directory" -print0 | <...>

其中${SRCROOT}/Directory重命名,因此find将输出错误而不会使脚本失败:构建日志将在执行构建阶段之后立即包含Command /bin/sh emitted errors but did not return a nonzero exit code to indicate failure
虽然Xcode本身没有问题,但xcodebuild在最后会失败,在触摸DSYM之后。
修复是为了确保如果构建阶段输出到stderr,则构建阶段正确地显式返回不同于0的退出代码(如1)。在我的例子中,更改find中引用的路径解决了这个问题。

相关问题