AST文件格式错误或损坏。

43

我有一个问题,不知道为什么会发生,但很可能是我误按了将一些系统框架移到垃圾箱。

我收到了一个错误消息:

AST文件格式不正确或损坏:'无法找到由AST文件引用的文件'/Users/username/myProject/QuartzCore.framework/Headers/CAMediaTiming.h''

我尝试将QuartzCore.framework复制到该目录中,但会出现很多新的错误。如果从该目录中删除框架,则对项目会有好处,直到进行任何代码更改。然后我必须再次执行先前的情况。现在非常烦人,我真的需要解决这个问题。有人能帮忙吗?


4
终于在这里找到一个有效的解决方案!https://dev59.com/D2Ml5IYBdhLWcg3wP1LE#20215239 - Albert Renshaw
2
那么,终端输入以下代码进行清理和构建... 终端命令是:rm -rf /Users/yourusername/Library/Developer/Xcode/DerivedData/ModuleCache/* - Albert Renshaw
不要忘记在该命令中用您的实际用户名替换“yourusername”... :) - Albert Renshaw
太棒了。我想让你把这个作为答案,这样我就可以为你检查它。非常感谢。 - Mohamed Emad Hegab
rm -rf ~/Library/Developer/Xcode/DerivedData/ModuleCache/* 请执行以上命令。 - Joel Teply
7个回答

99

按要求:

我遇到这个错误(在获得新的Xcode后)的原因是我尝试在模拟器中运行一个项目(意外地在模拟器中,我从不使用模拟器),但我会忘记选择我的设备或者我的设备会在我没有注意到的情况下变得未连接,然后它会尝试在模拟器中运行...所以我会得到那些经典的“.o”文件错误...然后我会切换回我的设备并且得到损坏的AST文件...


为了解决问题...(非常仔细地按照下面的步骤执行!!!)

  1. 清理你的项目
  2. 退出Xcode(CMD+Q)
  3. 运行以下终端命令:
    rm -rf ~/Library/Developer/Xcode/DerivedData/ModuleCache/*
  4. 运行以下终端命令:
    rm -rf ~/Library/Developer/Xcode/DerivedData/ModuleCache.noindex/*
  5. 重新打开Xcode
  6. 确保你已经选择了你的设备而不是模拟器
  7. 清理项目(是的,再次清理
  8. 然后构建(到你的设备上, 而不是模拟器)...

享受吧!

注意:经过进一步的实验,我发现强制退出xCode可能不是必要的。


4
这对我从未起过作用。如果“清理”无效,则删除模块缓存也没有效果。在多个项目和多个设置中都是如此。 - Adam
1
@Adam 对我来说,在删除模块缓存之前,我必须先清理项目,然后再删除模块缓存,最后在删除后再次清理项目。如果我没有在删除前和删除后进行清理,那么错误会留在RAM中或其他地方,然后立即被重新写入模块缓存中,就好像我从未删除过它一样。 - Albert Renshaw
@Adam 今晚又遇到了这个问题,但这次我能够找出原因...模拟器为我创建了畸形的AST文件,而我从不使用模拟器,但是插在我的iPhone上的线被碰了一下,它晃动了一下并断开了连接(尽管看起来没有断开),将Xcode切换到模拟器,这会导致使用模拟器无法处理的框架(例如显示相机)时出现那些模拟.o错误,然后当切换回我的设备时,我会收到AST错误。 - Albert Renshaw
@Adam 话虽如此,我尝试了我的原始解决方案,但它无法工作...但是一旦我让它工作起来后,我修改了上面的答案,请尝试新的步骤(请仔细遵循!)谢谢 :) - Albert Renshaw
9
我只需要清理项目并重新构建即可。 - Boon
显示剩余5条评论

10

除了所有其他"清理构建"答案之外,直到我清空(高度未记录的!)/var/folders目录之前,没有任何方法对我起作用。

显然,这是由OS-X维护的“杂项缓存”目录。 我甚至都没费心找出哪些是“正确的文件”,我只是清除了整个目录。

...现在我又可以重新构建了。😃 从终端运行:

[sudo] rm -rf /var/folders/*

(尽管我是通过身份验证从Finder中完成的。)(OS-X 10.9.最新版本)

额外线索:我可以使用XCode-6-beta进行构建,但在XCode-5中出现了愚蠢的“损坏的AST文件”错误。


6
在我的情况下,我所需要做的就是点击“产品”>“清理”,然后再次构建项目。它成功了。希望这能帮助一些遇到相同情况的人。

4

就我个人而言,只有一种解决方案适用于我: 在Xcode中,转到“窗口” ->“组织者” 单击“派生数据”目录附近的“删除”按钮。 然后再次运行您的项目...


这也是我唯一奏效的方法。在删除派生数据之前,我无法分析我的项目,而这种方法比试图找到它要容易得多。 - hoss

4

大家好,我曾经遇到同样的错误,因为我同时打开了两个项目,并且从一个项目中拖放框架到另一个项目中。 过了一段时间后,我意识到这并不是正确的方法。我将所有从其他项目中拖来的框架移到了垃圾箱中。然后在模拟器中进行清理和运行,一切正常。

删除框架 -> 再次添加框架 -> 清理并运行

希望能对某些人有所帮助。


0

我刚刚清理了我的项目并重新构建。一切恢复正常。


0
在我的情况下,错误是因为我有一个损坏的.m文件 - 它是一种不知何故(不太确定如何)进入了我的项目(我同时打开了Eclipse,而且这个损坏的文件里面有一些Java代码)。为了解决这个问题,我清理了我的项目,关闭了Xcode,删除了错误的.m文件并重新打开了Xcode。然后它给了我一个clang错误,因为现在缺少了.m文件。我创建了一个同名的新的空的.m文件,项目运行得很好。有点像黑客,但它起作用了 :-)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接