XcodeiOS项目:运行调试构建时,控制台日志开头的“fopenfailed”和“Invalidatingcache…”是什么意思?
我在 Xcode 12 中有一个 iOS 应用程序项目。它被设置为仅支持 iOS 12.4 及更高版本的 iPhone 应用程序。它使用 CoreData 和 PDFKit 框架,以及两个专有的 Swift 包。所有源代码都是 Swift。
当我在模拟器或物理 iPhone 设备上运行应用程序的调试版本时,我总是在控制台日志的开头看到以下几行:
2020-11-20 13:14:52.785201-0700 [name of my app] fopen failed for data file: errno = 2 (No such file or directory)
2020-11-20 13:14:52.785318-0700 [name of my app] Errors found! Invalidating cache...
2020-11-20 13:14:52.895737-0700 [name of my app] fopen failed for data file: errno = 2 (No such file or directory)
2020-11-20 13:14:52.895847-0700 [name of my app] Errors found! Invalidating cache...
这些行似乎不会对应用程序的功能产生不利影响,但我想知道它们的含义以及它们的来源。我在发布到 Internet 的其他问题中看到控制台日志中的相同行,但从未见过有人专门询问这些行的含义的问题(这些问题总是询问其他问题,而他们的日志刚刚发生在其中包含这些行)。
回答
当我从 Android Studio SDK 在“Xcode 中的 iOS 模块”上运行 Flutter 生成的应用程序时,我遇到了同样的错误。在 Xcode 中运行“产品”->“清理构建文件夹”后,我的错误被清除。
我的设置是:Catalina 10.15.7、Android Studio 4.0、Flutter 2.01 和 Xcode 12.4。
回答
金属是一种可能的罪魁祸首。如果您正在导入 Metal,请尝试省略它以查看错误是否消失。此外,编辑您的方案诊断(命令<,然后单击“诊断”选项卡)并取消选择“金属 API 验证”(如果已选择)。
不确定原因,但在某些情况下,Metal 会尝试在文件存在之前从 Caches 目录中读取该文件。在这种情况下,错误应该只在您第一次运行应用程序时出现。
无论如何,我相信忽略此错误是安全的,但请检查 MTL_ENABLE_DEBUG_INFO 的目标构建设置并确保 Release 设置为“NO”。
如果这些都不适用于您的情况,请尝试在查看您的应用程序缓存目录的同时单步执行您的代码,以查看哪些框架正在使用它。