Xcode 11 GM - 错误:访问构建数据库 - 磁盘 I/O 错误

Posted

技术标签:

【中文标题】Xcode 11 GM - 错误:访问构建数据库 - 磁盘 I/O 错误【英文标题】:Xcode 11 GM - error: accessing build database - disk I/O error 【发布时间】:2019-09-16 21:19:07 【问题描述】:

仅构建“通用二进制框架”用于发布分发时遇到以下错误。在调试或发布模式下构建“非通用”方案时,相同的项目和设置有效。

项目使用 Objective-C 和 Xcode 11 GM (11A419c)。现在,更新到 Xcode 11 GM Seed 2 (11A420a)。

错误:访问构建数据库“/Users/john.doe/Library/Developer/Xcode/DerivedData/FrameworkSDK-esxhqchxkdevuiapyebthsdscpje/Build/Intermediates.noindex/XCBuildData/build.db”:磁盘I/O错误

在脚本中使用build command

xcodebuild -workspace $PROJECT_NAME.xcworkspace -scheme $PROJECT_NAME -sdk iphonesimulator -configuration $CONFIGURATION only_active_arch=no defines_module=yes clean build CONFIGURATION_BUILD_DIR=$BUILD_DIR/$CONFIGURATION-iphonesimulator 2>&1

尝试了几个步骤:完成清理、更新 pod 以及 Related error for Xcode 10 和 linked post 中提到的步骤 - 不能解决此问题

这个问题没有答案:why error "accessing build database disk I/O error"?

【问题讨论】:

什么版本的 Xcode? 11A420a? 那些 .db 文件是 sqlite 数据库。您可以使用 sqlite3 命令访问它们而不会出现 I/O 错误吗? 最新的 Xcode11 GM2 种子 (11A420a) 也发生在我身上。我在“运行脚本”构建阶段添加了一些回显命令,以查看其根本原因。有趣的一点是,脚本运行成功,但构建仍然失败,因为提到的...Intermediates.noindex/XCBuildData/build.db": disk I/O error没有线索,如何解决这个问题。 它使用的是 GM Seed 1 (11A419c)。现在,更新到 2019 年 9 月 16 日发布的 Xcode 11 GM Seed 2 (11A420a)。 重启 Xcode 解决了。 【参考方案1】:

在 Xcode 11 中使用 Command Line Tools

确保使用正确版本的 Command Line Tools (xcodebuild) 与完整的干净和全新构建通用框架一起使用。该项目正在使用New Build System (Default)。它还适用于 Xcode 11 GM - Build 11A419c(种子 1)。

使用以下命令确保正确链接:

xcodebuild -version
Xcode 11.0
Build version 11A419c

之前它使用的是旧的Xcode10.2xcodebuild

替代解决方法

不是一个好的修复,因为它使用 Legacy Build System 而不是带有 Xcode 11 的现代系统。

    当用于通用框架项目时,一种选择是使用Legacy Build SystemShared Project Settings

    尝试使用未记录的xcodebuild 参数-UseModernBuildSystem=NO,但没有成功。 [正在修复命令行,将更新]

相关发行说明:针对 GM-2 种子:于 2019 年 9 月 16 日发布 Build 11A420a

XCFramework 可以捆绑二进制框架或 多平台库——包括 ios 设备、iOS 模拟器、 和 Mac Catalyst — 到一个可分发的 .xcframework 包中 您的开发人员可以在他们自己的应用程序中使用。一个 .xcframework 包可以添加到 Xcode 目标的链接库 阶段和 Xcode 使用正确平台的包含的版本 构建时的框架或库。框架的创建是 使用 xcodebuild -create-xcframework 从命令行支持。 捆绑在 XCFramework 中的框架或库应该使用 Build Libraries for Distribution 构建设置设置为 YES。 (49948269)

【讨论】:

使用 -UseModernBuildSystem=NO 不再是 xcode 12 的解决方案,因为旧版构建系统在 xcode 12 中已被弃用。【参考方案2】:

以防有人仍然被困在这里。 我关注 This Answer 并摆脱磁盘 I/O 错误。

添加:

 OBJROOT="$OBJROOT/DependentBuilds"

【讨论】:

以上是关于Xcode 11 GM - 错误:访问构建数据库 - 磁盘 I/O 错误的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 11 GM Seed 2 在构建工作区/项目时冻结

Xcode 版本 9.1 (9B55) 上传存档失败 - iOS 11.1 - 应用程序必须使用公共 (GM) 版本构建

错误 ITMS-90596 / Xcode 的 GM 版本 / Phonegap

Facebook 登录错误 - Xcode 8 GM

Xcode 11 GM-设备启动后应用程序崩溃由于信号9而终止

XCode 6 GM 占用磁盘空间和内存