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
相关产品推荐
相关产品推荐

