我已经开发iOS应用程序超过2年了,从来没有遇到过这个问题。我正在尝试存档一个测试版的应用程序。构建成功,但在该过程的最后,Xcode报告“存档已取消”。
构建日志不会显示任何类型的警告或错误。
有时,通过清理/清理构建文件夹/擦除派生数据,我可以使归档成功,但似乎没有模式。有没有人遇到过这个问题?在这种情况下,我甚至没有任何东西可以用来处理错误消息。
发布于 2013-06-02 17:29:19
你有没有一个自定义的运行脚本,可以用agvtool来升级版本?我发现这正是导致这种行为的原因。几乎100%的归档失败,以及常见的构建失败。移除它为我解决了这个问题。
发布于 2015-04-29 01:42:26
首先:ConfusedNoob的答案是+1,因为这就是问题所在(这让我做了无数次实验,最后得到了这个解决方案)。如果我的回答对你有帮助,+1他的也是,因为他的暗示是巨大的!
(另外,请参阅下面我的另一个答案,它完全绕过了agvtool。我最终习惯于在我的所有项目中使用它。)
我一直在处理它,我发现唯一能可靠地解决它的事情是在适当的方案中使用agvtool作为预操作,而不是在构建阶段使用run-script。
要编辑方案的
Run
和Archive
上做的,但我可能真的只需要在archive.cd ${PROJECT_DIR};xcrun agvtool next-version -all
(注意:pre-action不能自然地在${PROJECT_DIR}
中运行,因此您必须使用cd
。)
关闭并保存,就是这样。
问题是agvtool会修改项目文件(不必要,因为我们关心的所有内部版本号都在其他地方),而修改项目文件会导致构建取消。
在这个问题上也是+1 --天哪,这是一个很难回答的问题!
发布于 2015-05-25 13:12:20
另一种技术是完全跳过agvtool
。只需将此运行时脚本添加到构建阶段的末尾(在复制捆绑包资源之后)。
Run Script
phase(添加新的阶段设置)
为了便于复制/粘贴,该脚本如下:
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
确保脚本在构建的复制捆绑阶段之后运行
https://stackoverflow.com/questions/16869159
复制相似问题