You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

macOS应用安装Crashlytics后xcodebuild构建失败求助

解决xcodebuild构建nanopb时"文件存在但非目录"的问题

问题场景

已为macOS应用成功集成Crashlytics,通过Xcode IDE构建完全正常,但执行xcodebuild命令时触发构建失败,核心错误为创建nanopb相关构建目录时提示"文件存在但非目录"。完整构建日志(已翻译为中文):

构建描述路径: /Users/user/Software/macos-project/build/XCBuildData/1de1a3320b63060eeac8ee6054441eab.xcbuilddata

警告: 按手动顺序构建目标已被弃用 - 请在项目编辑器中勾选"为命令行构建并行化构建",或在当前构建的任意目标中设置DISABLE_MANUAL_TARGET_ORDER_BUILD_WARNING来抑制此警告
ClangStatCache /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang-stat-cache /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk /var/folders/3y/wxqdg41958n7cl4xdf9qzxxh0000gn/C/com.apple.DeveloperTools/14.3-14E222b/Xcode/SDKStatCaches.noindex/macosx13.3-22E245-.sdkstatcache
    cd /Users/user/Software/macos-project/project.xcodeproj
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang-stat-cache /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk -o /var/folders/3y/wxqdg41958n7cl4xdf9qzxxh0000gn/C/com.apple.DeveloperTools/14.3-14E222b/Xcode/SDKStatCaches.noindex/macosx13.3-22E245-.sdkstatcache

CreateBuildDirectory /Users/user/Library/Developer/Xcode/DerivedData/project-enqmgygeiagmohbnywjtetshcnrr/SourcePackages/checkouts/nanopb/build/Release
    cd /Users/user/Software/macos-project/project.xcodeproj
    builtin-create-build-directory /Users/user/Library/Developer/Xcode/DerivedData/project-enqmgygeiagmohbnywjtetshcnrr/SourcePackages/checkouts/nanopb/build/Release
错误: 文件已存在但并非目录: /Users/user/Library/Developer/Xcode/DerivedData/project-enqmgygeiagmohbnywjtetshcnrr/SourcePackages/checkouts/nanopb/build

CreateBuildDirectory /Users/user/Library/Developer/Xcode/DerivedData/project-enqmgygeiagmohbnywjtetshcnrr/SourcePackages/checkouts/nanopb/build/EagerLinkingTBDs/Release
    cd /Users/user/Software/macos-project/project.xcodeproj
    builtin-create-build-directory /Users/user/Library/Developer/Xcode/DerivedData/project-enqmgygeiagmohbnywjtetshcnrr/SourcePackages/checkouts/nanopb/build/EagerLinkingTBDs/Release
错误: 文件已存在但并非目录: /Users/user/Library/Developer/Xcode/DerivedData/project-enqmgygeiagmohbnywjtetshcnrr/SourcePackages/checkouts/nanopb/build/EagerLinkingTBDs

警告: 请求ONLY_ACTIVE_ARCH=YES但存在多个架构,无法计算出活跃架构;将为所有适用架构构建(来自项目'project'的目标'project')
警告: 运行脚本构建阶段'Swiftlint'将在每次构建时运行,因为它未指定任何输出。要解决此警告,请为脚本阶段添加输出依赖,或取消勾选"基于依赖分析"以配置为在每次构建时运行。(来自项目'project'的目标'project')
警告: 运行脚本构建阶段'Firebase'将在每次构建时运行,因为它未指定任何输出。要解决此警告,请为脚本阶段添加输出依赖,或取消勾选"基于依赖分析"以配置为在每次构建时运行。(来自项目'project'的目标'project')
** 构建失败 **


以下构建命令失败:
    CreateBuildDirectory /Users/user/Library/Developer/Xcode/DerivedData/project-enqmgygeiagmohbnywjtetshcnrr/SourcePackages/checkouts/nanopb/build/Release
    CreateBuildDirectory /Users/user/Library/Developer/Xcode/DerivedData/project-enqmgygeiagmohbnywjtetshcnrr/SourcePackages/checkouts/nanopb/build/EagerLinkingTBDs/Release

解决方案

1. 清理DerivedData目录

这是最直接的解决方式,问题源于DerivedData中nanopb的构建目录被异常替换为文件:

# 删除当前项目的DerivedData目录
rm -rf ~/Library/Developer/Xcode/DerivedData/project-enqmgygeiagmohbnywjtetshcnrr

# 或者删除所有DerivedData(适合多个项目出现类似问题的情况)
rm -rf ~/Library/Developer/Xcode/DerivedData

2. 重新拉取SPM依赖

清理后重新解析并拉取依赖,确保nanopb包的本地文件结构正常:

cd /Users/user/Software/macos-project
xcodebuild -resolvePackageDependencies

3. 指定自定义构建目录

执行xcodebuild时指定独立的构建目录,避免与Xcode IDE的构建目录冲突:

xcodebuild -project project.xcodeproj -configuration Release -derivedDataPath ./custom-build-data

4. 明确指定构建架构

日志中存在架构相关警告,执行xcodebuild时明确指定架构,避免构建参数冲突:

# 针对Apple Silicon Mac
xcodebuild -project project.xcodeproj -configuration Release -arch arm64

# 针对Intel Mac
xcodebuild -project project.xcodeproj -configuration Release -arch x86_64

内容的提问来源于stack exchange,提问作者BlackM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 12:37:26