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

Xcode 14.3归档成功后因BCSymbolMaps文件重复无法继续求助

解决Xcode 14.3归档时同名BCSymbolMaps文件冲突问题

问题描述

  • 在M1 Mac上使用Xcode 14.3归档项目时,系统提示“归档成功”,但因存在同名BCSymbolMaps文件(0D43A9F9-2A23-386C-9568-E0D28099B3D5.bcsymbolmap),无法查看归档产物。
  • 本机存在一款同名、同BundleID及同开发团队的应用,已正常归档并发布一年。
  • 排查发现问题源于Pods框架安装流程,关联的framework.sh代码如下:
if [ -d "${source}/${BCSYMBOLMAP_DIR}" ]; then
    # Locate and install any .bcsymbolmaps if present, and remove them from the .framework before the framework is copied
    find "${source}/${BCSYMBOLMAP_DIR}" -name "*.bcsymbolmap"|while read f; do
      echo "Installing $f"
      install_bcsymbolmap "$f" "$destination"
      rm "$f"
    done
    rmdir "${source}/${BCSYMBOLMAP_DIR}"
  fi
  • 已尝试清理构建文件夹、删除现有归档文件、清除Derived Data、删除重复文件等方案,但文件会在归档时重新生成,问题依旧。

问题根源

这段脚本负责将Pods框架内的bcsymbolmap文件拷贝到归档目录,但Xcode归档时会将所有bcsymbolmap文件集中存放。如果不同Pods产物生成了UUID相同的bcsymbolmap文件,或者本机已有同UUID的文件来自另一同BundleID应用,就会导致重复写入引发冲突,最终无法正常访问归档产物。

解决方案

1. 修改Pods的framework.sh脚本,添加重复文件检查

编辑Pods安装流程中的framework.sh文件,在调用install_bcsymbolmap前检查目标路径是否已存在同名文件,存在则跳过拷贝,避免重复写入。修改后的代码如下:

if [ -d "${source}/${BCSYMBOLMAP_DIR}" ]; then
    # Locate and install any .bcsymbolmaps if present, and remove them from the .framework before the framework is copied
    find "${source}/${BCSYMBOLMAP_DIR}" -name "*.bcsymbolmap"|while read f; do
      bc_filename=$(basename "$f")
      dest_path="${destination}/${bc_filename}"
      if [ ! -f "$dest_path" ]; then
          echo "Installing $f"
          install_bcsymbolmap "$f" "$destination"
      else
          echo "Skipping duplicate bcsymbolmap: $bc_filename"
      fi
      rm "$f"
    done
    rmdir "${source}/${BCSYMBOLMAP_DIR}"
  fi

2. 清理Pods缓存并重新安装

执行以下命令彻底清理Pods相关缓存,确保修改后的脚本生效:

pod deintegrate
pod clean
rm -rf ~/Library/Caches/CocoaPods
rm -rf Pods
rm Podfile.lock
pod install

3. 隔离同BundleID应用的归档环境

因为本机存在同BundleID的已发布应用,建议为当前项目创建独立的Xcode配置,避免归档产物共享存储目录:

  • 打开Xcode项目的Project Settings,添加新的Configuration(例如Release-Archive)
  • 归档时选择该自定义Configuration,确保当前项目的归档产物与已发布应用完全隔离

4. 手动修改冲突文件的UUID(临时方案)

如果上述方案暂时无法生效,可尝试手动修改冲突文件的UUID:

  • 找到Pods产物中生成的0D43A9F9-2A23-386C-9568-E0D28099B3D5.bcsymbolmap文件
  • 使用文本编辑器打开文件,修改顶部的UUID字段为新的唯一UUID(可通过uuidgen命令生成新UUID)
  • 将文件名修改为与新UUID一致,再重新执行归档流程

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:22:39