React Native 提交至 App Store 报错 The archive did not include a dSYM for the hermes.
React Native 0.76.7 iOS 打包提交 App Store 遇到 Hermes dSYM 缺失题目的解决方案错误形貌
在使用 React Native 0.76.7 打包 iOS 应用并提交至 App Store Connect 时,大概会遇到以下错误:
The archive did not include a dSYM for the hermes.framework with the UUIDs .
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 归档文件默认路径:
~/Library/Developer/Xcode/Archives
找到最新生成的 .xcarchive 文件,右键 → 选择“显示包内容”。
2. 验证 dSYM 是否存在
进入 dSYMs 目录,查抄是否包含:
[*]YourApp.app.dSYM(应用自身的符号文件)
[*]hermes.framework.dSYM(Hermes 引擎的符号文件)
如果 hermes.framework.dSYM 缺失,请继续执行以下步骤。
二、处置惩罚版本升级冲突
1. 清理项目缓存
# 删除 iOS 构建目录
rm -rf ios/build
# 清理 Xcode 缓存
rm -rf ~/Library/Developer/Xcode/DerivedData
# 清理 CocoaPods 缓存
cd ios && pod deintegrate && rm -rf Pods
2. 更新依赖
# 升级 React Native 至 0.76.7
yarn up react-native@0.76.7
# 重新安装 iOS 依赖
cd ios && pod install --repo-update
三、生成 Hermes dSYM 文件
方案 1:通过 Xcode 构建脚本自动生成
[*]添加构建脚本
[*]Xcode → 项目 Target → Build Phases → 点击 +,选择 New Run Script Phase。
[*]将以下脚本粘贴到输入框中,并定名为 Generate Hermes dSYM:
HERMES_ENGINE_PATH="${PODS_ROOT}/hermes-engine"
REACT_NATIVE_PATH="../node_modules/react-native"
if [ -f "$REACT_NATIVE_PATH/scripts/hermes/create-dsym.sh" ]; then
"$REACT_NATIVE_PATH/scripts/hermes/create-dsym.sh" \
-i "$HERMES_ENGINE_PATH/destroot/Library/ios-arm64/hermes.framework/hermes" \
-o "${DWARF_DSYM_FOLDER_PATH}/hermes.framework.dSYM"
else
echo "Error: Hermes dSYM 生成脚本未找到!"
fi
[*]调整脚本顺序 确保 Generate Hermes dSYM 在 Copy dSYMs 之前执行。
方案 2:手动生成并集成
[*]找到 Hermes 二进制文件
${PODS_ROOT}/hermes-engine/destroot/Library/ios-arm64/hermes.framework/hermes
[*]生成 dSYM
dsymutil ${PODS_ROOT}/hermes-engine/destroot/Library/ios-arm64/hermes.framework/hermes
-o hermes.framework.dSYM
[*]复制到归档文件
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. 集成到项目
cp -R /path/to/downloaded/hermes.framework.dSYM /path/to/YourApp.xcarchive/dSYMs/
五、验证 UUID 匹配
[*]查抄 dSYM 的 UUID
dwarfdump --uuid /path/to/YourApp.xcarchive/dSYMs/hermes.framework.dSYM
输出效果应包含 错误信息中的 UUID(如 370D4F3B-9105-372E-A571-E4AA5F1DCE9A)。
[*]查抄 Hermes 二进制文件的 UUID
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!
页:
[1]