【问题标题】:Xcode 11 GM - error: accessing build database - disk I/O errorXcode 11 GM - 错误:访问构建数据库 - 磁盘 I/O 错误
【发布时间】: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 10linked 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 解决了。

标签: objective-c xcode xcode11


【解决方案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 的现代系统。

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

  2. 尝试使用未记录的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"

【讨论】:

    猜你喜欢
    • 2022-07-13
    • 1970-01-01
    • 2015-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多