存档在Xcode 4.5中 - 没有错误,但构建已取消

时间:2013-06-01 04:44:07

标签: ios xcode xcode4

我一直在为>构建iOS应用2年从未遇到过这个问题。我正在尝试存档用于测试版发布的应用。构建成功,但在流程的最后,Xcode报告'存档已取消'。

enter image description here

构建日志不会显示任何警告或错误。

enter image description here

有时,通过清理/清理构建文件夹/擦除派生数据,我可以使存档成功,但似乎没有模式。有没有人遇到过这个问题?在这种情况下,我甚至无法继续处理错误消息。

6 个答案:

答案 0 :(得分:38)

你有自定义运行脚本使用agvtool来破坏版本吗?我发现这导致了这种确切的行为。几乎100%的归档失败,以及常见的构建失败。删除这个解决了我的问题。

答案 1 :(得分:15)

首先:对于ConfusedNoob的答案+1,因为这就是问题(这导致我进行了大量的实验,最后是这个解决方案。)如果我的答案对你有帮助,那么也要+1,因为他的提示很大!

(另外,请参阅下面的其他答案,完全绕过agvtool。我最终决定在我的所有项目中使用它。)

我一直在搞乱它,我发现唯一可靠地解决它的方法是使用agvtool作为适当方案中的预处理,而不是作为运行脚本在构建阶段。

  • CMD-SHIFT-comma编辑方案(XCode 6.x)
  • 打开你想要的任何方案。我是在RunArchive上完成的,但我可能只需要存档。
  • 选择“+”图标和“新建运行脚本操作”
  • 添加您的agvtool脚本。如果你关心,我的是:

    cd ${PROJECT_DIR} ; xcrun agvtool next-version -all
    

注意:预行动不会自然地在${PROJECT_DIR}中投放,因此您必须cd。)

关闭&保存,就是这样。

问题是agvtool修改了项目文件(不必要的,因为我们关心的所有构建号都在其他地方),修改项目文件会导致构建取消。

在这个问题上只有一个 - cri cri,这是一个艰难的一个!

答案 2 :(得分:2)

另一种技术是完全跳过agvtool。只需将此运行时脚本添加到构建阶段的末尾(在复制包资源之后)。

  • 选择您的项目

Select your project

  • 选择构建阶段和+

Select build phases and +

  • 添加新的Run Script阶段

Add new run-script phase

  • 输入脚本

Enter the 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版本后开始遇到很多此问题。这是我为解决此问题所做的:

  1. 单击XCode顶部栏上的“锤子”图标。 enter image description here

  2. 在“构建系统”选项卡中选择“传统构建系统”。

  3. 单击完成。

如果您正在处理一个较旧的项目,并且似乎所有内容都已编译,则此后的应用程序构建应该不会出现此问题。

答案 5 :(得分:0)

我有同样的问题。但是我在仍使用avgtool的时候修复了它。

最后一步,我使用的是Build Phases Run Script 不是,并使用了以下脚本导致错误:

"${DEVELOPER_BIN_DIR}/agvtool" next-version -all

我的解决方案是将Build Phases Run Script用作最后阶段,并将脚本更改为以下脚本

agvtool bump