React Native 提交至 App Store 报错 The archive did not include a dSYM ...

打印 上一主题 下一主题

主题 1748|帖子 1748|积分 5244

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
React Native 0.76.7 iOS 打包提交 App Store 遇到 Hermes dSYM 缺失题目的解决方案

错误形貌

在使用 React Native 0.76.7 打包 iOS 应用并提交至 App Store Connect 时,大概会遇到以下错误:
  1. The archive did not include a dSYM for the hermes.framework with the UUIDs [370D4F3B-9105-372E-A571-E4AA5F1DCE9A].
  2. Ensure that the archive's dSYM folder includes a DWARF file for hermes.framework with the expected UUIDs.
复制代码
该错误表明归档文件(Archive)中 缺少 Hermes 引擎的调试符号文件(hermes.framework.dSYM),导致苹果无法验证二进制文件的完整性。

题目缘故原由


  • Hermes dSYM 未生成
    React Native 构建流程大概未精确生成 Hermes 的调试符号文件。
  • 版本升级冲突
    从旧版本升级至 React Native 0.76.7 时,残留的构建缓存或依赖大概导致符号文件丢失。
  • 架构目录不匹配
    Hermes 的 dSYM 文件需要根据 构建目的(真机、模仿器等)放置到精确的架构目录中。

完整解决方案

一、查抄现有 dSYM 文件

1. 定位归档文件

在 Finder 中,进入 Xcode 归档文件默认路径:
  1. ~/Library/Developer/Xcode/Archives
复制代码
找到最新生成的 .xcarchive 文件,右键 → 选择“显示包内容”
2. 验证 dSYM 是否存在

进入 dSYMs 目录,查抄是否包含:


  • YourApp.app.dSYM(应用自身的符号文件)
  • hermes.framework.dSYM(Hermes 引擎的符号文件)
如果 hermes.framework.dSYM 缺失,请继续执行以下步骤。

二、处置惩罚版本升级冲突

1. 清理项目缓存

  1. # 删除 iOS 构建目录
  2. rm -rf ios/build
  3. # 清理 Xcode 缓存
  4. rm -rf ~/Library/Developer/Xcode/DerivedData
  5. # 清理 CocoaPods 缓存
  6. cd ios && pod deintegrate && rm -rf Pods
复制代码
2. 更新依赖

  1. # 升级 React Native 至 0.76.7
  2. yarn up react-native@0.76.7
  3. # 重新安装 iOS 依赖
  4. cd ios && pod install --repo-update
复制代码

三、生成 Hermes dSYM 文件

方案 1:通过 Xcode 构建脚本自动生成


  • 添加构建脚本

    • Xcode项目 TargetBuild Phases → 点击 +,选择 New Run Script Phase
    • 将以下脚本粘贴到输入框中,并定名为 Generate Hermes dSYM
    1. HERMES_ENGINE_PATH="${PODS_ROOT}/hermes-engine"
    2. REACT_NATIVE_PATH="../node_modules/react-native"
    3. if [ -f "$REACT_NATIVE_PATH/scripts/hermes/create-dsym.sh" ]; then
    4.   "$REACT_NATIVE_PATH/scripts/hermes/create-dsym.sh" \
    5.     -i "$HERMES_ENGINE_PATH/destroot/Library/ios-arm64/hermes.framework/hermes" \
    6.     -o "${DWARF_DSYM_FOLDER_PATH}/hermes.framework.dSYM"
    7. else
    8.   echo "Error: Hermes dSYM 生成脚本未找到!"
    9. fi
    复制代码

  • 调整脚本顺序 确保 Generate Hermes dSYM 在 Copy dSYMs 之前执行
方案 2:手动生成并集成


  • 找到 Hermes 二进制文件
  1. ${PODS_ROOT}/hermes-engine/destroot/Library/ios-arm64/hermes.framework/hermes
复制代码

  • 生成 dSYM
  1. dsymutil ${PODS_ROOT}/hermes-engine/destroot/Library/ios-arm64/hermes.framework/hermes
  2. -o hermes.framework.dSYM
复制代码

  • 复制到归档文件
  1. cp -R hermes.framework.dSYM /path/to/YourApp.xcarchive/dSYMs/
复制代码

四、从官方 Release 下载 dSYM 文件

如果本地生成失败,可直接从 React Native 官方堆栈 下载预编译的 dSYM 文件。
1. 访问 Releases 页面

在 React Native Releases 中,找到 0.76.7 版本。
2. 下载匹配架构的 dSYM

目录名称实用场景ios-arm64iOS 真机ios-arm64_x86_64-simulatoriOS 模仿器ios-arm64_x86_64-maccatalystMac Catalyst 应用xros-arm64Vision Pro 真机xros-arm64_x86_64-simulatorVision Pro 模仿器 3. 集成到项目

  1. cp -R /path/to/downloaded/hermes.framework.dSYM /path/to/YourApp.xcarchive/dSYMs/
复制代码

五、验证 UUID 匹配


  • 查抄 dSYM 的 UUID
  1. dwarfdump --uuid /path/to/YourApp.xcarchive/dSYMs/hermes.framework.dSYM
复制代码
输出效果应包含 错误信息中的 UUID(如 370D4F3B-9105-372E-A571-E4AA5F1DCE9A)。

  • 查抄 Hermes 二进制文件的 UUID
  1. dwarfdump --uuid ${PODS_ROOT}/hermes-engine/destroot/Library/ios-arm64/hermes.framework/hermes
复制代码
如果两者 UUID 不一致,需要重新生成或下载精确版本的 dSYM 文件。

六、重新提交至 App Store


  • 清理构建

    • Xcode → Product → Clean Build Folder

  • 生成新归档

    • Xcode → Product → Archive

  • 验证归档文件

    • Xcode Organizer → 右键最新归档 → Show in Finder → 查抄 dSYMs 文件夹

  • 提交至 App Store Connect

    • 确保一切精确后,重新提交应用。


总结



  • 优先使用 Xcode 脚本自动生成 Hermes dSYM,确保流程尺度化。
  • 彻底清理缓存,避免版本升级后 dSYM 丢失。
  • 官方 dSYM 下载 实用于本地生成失败或 UUID 不匹配的环境。
  • 始终验证 UUID 一致性,保证符号文件精确匹配二进制文件。
通过以上步骤,可彻底解决 Hermes dSYM 缺失题目,顺利提交应用到 App Store!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

火影

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表