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

