解决:发布到苹果商店时错误The archive did not include a dSYM for the hermes.framework with the UUIDs

React Native 发布到苹果商店的时候遇到以下错误:

sh 复制代码
The archive did not include a dSYM for the hermes.framework with the UUIDs [58A2B46F-BC4E-34AE-82CE-EF76DFDEA9A8]. Ensure that the archive's dSYM folder includes a DWARF file for hermes.framework with the expected UUIDs.

目前这个问题解决方法比较少, Google 也没有一个完全可以解决, 但是根据各种大神的回复, 进行综合之后, 得到了一个完整的通用的解决方案.

以下是以 hermes.framework 缺少 dSYMs 为例, 如果是其他的 framework 类似的处理即可.

出问题的地方在 [你的项目]/ios/Pods/hermes-engine/destroot/Library/Frameworks/universal/hermes.xcframework

sh 复制代码
.
├── Info.plist
├── ios-arm64
├── ios-arm64_x86_64-maccatalyst
├── ios-arm64_x86_64-simulator
├── xros-arm64
└── xros-arm64_x86_64-simulator

这些目录中缺少了 dSYMs

打开页面 下载 dSYM, 注意找到对应 React Native 一样的版本号, 下载 release 的包.

hermes.xcframework 的每个子目录都创建一个目录 dSYMs, 然后解压下载的 release 包, 把 hermes.framework.dSYM 放在新建的目录中. 需要注意的是不同的目录要对应不同的文件.

处理后, 我的目录结构如下, 再次打包上传, 一切正常.

sh 复制代码
.
├── Info.plist
├── ios-arm64
│   ├── dSYMs
│   │   └── hermes.framework.dSYM
│   └── hermes.framework
│       ├── Info.plist
│       └── hermes
├── ios-arm64_x86_64-maccatalyst
│   ├── dSYMs
│   │   └── hermes.framework.dSYM
│   └── hermes.framework
│       ├── Resources -> Versions/Current/Resources
│       ├── Versions
│       └── hermes -> Versions/Current/hermes
├── ios-arm64_x86_64-simulator
│   ├── dSYMs
│   │   └── hermes.framework.dSYM
│   └── hermes.framework
│       ├── Info.plist
│       └── hermes
├── xros-arm64
│   ├── dSYMs
│   │   └── hermes.framework.dSYM
│   └── hermes.framework
│       ├── Info.plist
│       └── hermes
└── xros-arm64_x86_64-simulator
    ├── dSYMs
    │   └── hermes.framework.dSYM
    └── hermes.framework
        ├── Info.plist
        └── hermes

这样打包, 发布就完成了.

如果执行了 clean, 可能文件就被清除了, 再打包, 又有问题, 可以创建一个 run script 脚本:

sh 复制代码
#!/bin/bash

echo "[Custom Script] Copy dSYMs to hermes-engine 1"

# Define source and destination paths
cp -R ${PROJECT_DIR}/dSYMs/ios-arm64/dSYMs ${PROJECT_DIR}/Pods/hermes-engine/destroot/Library/Frameworks/universal/hermes.xcframework/ios-arm64/
cp -R ${PROJECT_DIR}/dSYMs/ios-arm64_x86_64-maccatalyst/dSYMs ${PROJECT_DIR}/Pods/hermes-engine/destroot/Library/Frameworks/universal/hermes.xcframework/ios-arm64_x86_64-maccatalyst/
cp -R ${PROJECT_DIR}/dSYMs/ios-arm64_x86_64-simulator/dSYMs ${PROJECT_DIR}/Pods/hermes-engine/destroot/Library/Frameworks/universal/hermes.xcframework/ios-arm64_x86_64-simulator/
cp -R ${PROJECT_DIR}/dSYMs/xros-arm64/dSYMs ${PROJECT_DIR}/Pods/hermes-engine/destroot/Library/Frameworks/universal/hermes.xcframework/xros-arm64/
cp -R ${PROJECT_DIR}/dSYMs/xros-arm64_x86_64-simulator/dSYMs ${PROJECT_DIR}/Pods/hermes-engine/destroot/Library/Frameworks/universal/hermes.xcframework/xros-arm64_x86_64-simulator/

# Copy the directory
echo "Successfully copied dSYMs to Hermes destination"

重点注意的地方

  • 下载的 dSYMs 的版本要和 react-native 一致
  • 每个目录都要新建一个 dSYMs 文件夹
  • 每个目录复制的文件要对应, 看名字, 名字可能不完全一样
  • clean 之后会清除复制的文件, 可以在 Build Phases 中创建一个 Run Script 在每次打包的时候执行复制的操作
相关推荐
安分小尧26 分钟前
[特殊字符] 使用 Handsontable 构建一个支持 Excel 公式计算的动态表格
前端·javascript·react.js·typescript·excel
ElasticPDF-新国产PDF编辑器44 分钟前
React 项目 PDF 批注插件库在线版 API 示例教程
react.js·pdf·json
帅帅哥的兜兜2 小时前
react中hooks使用
前端·javascript·react.js
拉不动的猪11 小时前
刷刷题49(react中几个常见的性能优化问题)
前端·react.js·面试
小满zs13 小时前
React-router v7 第二章(路由模式)
前端·react.js
大莲芒13 小时前
react 15-16-17-18各版本的核心区别、底层原理及演进逻辑的深度解析--react18
前端·javascript·react.js
编程社区管理员15 小时前
「2025最新版React+Ant Design+Router+TailwindCss全栈攻略:从零到实战,打造高颜值企业级应用
前端·react.js·前端框架
gongzemin16 小时前
React 和 Vue3 在事件传递的区别
前端·vue.js·react.js
黄毛火烧雪下17 小时前
React Context API 用于在组件树中共享全局状态
前端·javascript·react.js
刘小哈哈哈18 小时前
封装了一个iOS多分区自适应宽度layout
macos·ios·cocoa