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.2
xcodebuild
。
替代解决方法
不是一个好的修复,因为它使用 Legacy Build System
而不是带有 Xcode 11 的现代系统。
当用于通用框架项目时,一种选择是使用Legacy Build System
和Shared 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