我一直在为>构建iOS应用2年从未遇到过这个问题。我正在尝试存档用于测试版发布的应用。构建成功,但在流程的最后,Xcode报告'存档已取消'。
构建日志不会显示任何警告或错误。
有时,通过清理/清理构建文件夹/擦除派生数据,我可以使存档成功,但似乎没有模式。有没有人遇到过这个问题?在这种情况下,我甚至无法继续处理错误消息。
答案 0 :(得分:38)
你有自定义运行脚本使用agvtool来破坏版本吗?我发现这导致了这种确切的行为。几乎100%的归档失败,以及常见的构建失败。删除这个解决了我的问题。
答案 1 :(得分:15)
首先:对于ConfusedNoob的答案+1,因为这就是问题(这导致我进行了大量的实验,最后是这个解决方案。)如果我的答案对你有帮助,那么也要+1,因为他的提示很大!
(另外,请参阅下面的其他答案,完全绕过agvtool。我最终决定在我的所有项目中使用它。)
我一直在搞乱它,我发现唯一可靠地解决它的方法是使用agvtool作为适当方案中的预处理,而不是作为运行脚本在构建阶段。
Run
和Archive
上完成的,但我可能只需要存档。添加您的agvtool脚本。如果你关心,我的是:
cd ${PROJECT_DIR} ; xcrun agvtool next-version -all
(注意:预行动不会自然地在${PROJECT_DIR}
中投放,因此您必须cd
。)
关闭&保存,就是这样。
问题是agvtool修改了项目文件(不必要的,因为我们关心的所有构建号都在其他地方),修改项目文件会导致构建取消。
在这个问题上只有一个 - cri cri,这是一个艰难的一个!
答案 2 :(得分:2)
另一种技术是完全跳过agvtool
。只需将此运行时脚本添加到构建阶段的末尾(在复制包资源之后)。
Run Script
阶段
脚本,便于复制/粘贴:
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
确保您的脚本在构建
的复制包阶段之后运行答案 3 :(得分:1)
对我来说,carthage update
构建阶段导致了这个问题。
同时检查您是否有任何其他构建阶段,其中包含修改文件或代码的脚本。
答案 4 :(得分:0)
就我而言,我在更新XCode版本后开始遇到很多此问题。这是我为解决此问题所做的:
如果您正在处理一个较旧的项目,并且似乎所有内容都已编译,则此后的应用程序构建应该不会出现此问题。
答案 5 :(得分:0)
我有同样的问题。但是我在仍使用avgtool
的时候修复了它。
最后一步,我使用的是Build Phases
Run Script
不是,并使用了以下脚本导致错误:
"${DEVELOPER_BIN_DIR}/agvtool" next-version -all
我的解决方案是将Build Phases
Run Script
用作最后阶段,并将脚本更改为以下脚本
agvtool bump