Skip to content

React Native 安装 Boost 依赖的校验错误解决方案

问题描述

在使用 React Native (0.73.1) 开发 iOS 应用时,执行 cd ios && pod install 命令时出现以下校验错误:

Verification checksum was incorrect, 
expected 6478edfe2f3305127cffe8caf73ea0176c53769f4bf1585be237eb30798c3b8e, 
got 5e89103d9b70bba5c91a794126b169cb67654be2051f90cf7c22ba6893ede0ff

该错误发生在 React Native 的 iOS 依赖安装过程中,直接原因是 Boost 依赖库文件下载源的校验失败

错误原因

经分析,此问题主要源于:

  1. Boost 官方仓库变更:React Native 默认从 boostorg.jfrog.io 下载 Boost 依赖
  2. 仓库服务不稳定:JFrog 仓库服务不可靠导致文件实际内容与预期不符
  3. 校验机制安全防护:CocoaPods 的校验机制检测到文件内容不一致而阻止安装

解决方案

方案一:升级 React Native(推荐)

此问题已在以下版本中官方修复:

  • React Native 0.72.9
  • React Native 0.73.2
bash
# 升级到修复版本
npm install react-native@0.73.2

# 清理并重新安装依赖
rm -rf node_modules package-lock.json 
npm install
cd ios && pod install

方案二:修改 Boost 下载源(临时)

如无法升级 React Native,手动修改 Boost 依赖下载地址:

兼容版本

  • RN 0.70+:Boost 1.76.0
  • RN 0.73+:Boost 1.83.0
  1. 打开 node_modules/react-native/third-party-podspecs/boost.podspec
  2. 修改下载源地址:
ruby
Pod::Spec.new do |spec|
  # ...其他配置保持不变
  spec.source = { 
    :http => 'https://archives.boost.io/release/1.76.0/source/boost_1_76_0.tar.bz2',
    # RN 0.73 用户使用 ↓
    # :http => 'https://archives.boost.io/release/1.83.0/source/boost_1_83_0.tar.bz2', 
    :sha256 => '原校验值保持不变' 
  }
end

方案三:使用 patch-package 持久化修复

防止每次重装依赖时手动修改:

<CodeGroup> <CodeGroupItem title="Bash" active>
bash
# 安装 patch-package
npm install --save-dev patch-package

# 修改 boost.podspec 后创建补丁
npx patch-package react-native
</CodeGroupItem> <CodeGroupItem title="package.json">
json
{
  "scripts": {
    "postinstall": "patch-package"
  },
  "devDependencies": {
    "patch-package": "^6.5.0"
  }
}
</CodeGroupItem> </CodeGroup>

补丁文件示例 (patches/react-native+版本号.patch):

diff
diff --git a/node_modules/react-native/third-party-podspecs/boost.podspec b/node_modules/react-native/third-party-podspecs/boost.podspec
--- a/node_modules/react-native/third-party-podspecs/boost.podspec
+++ b/node_modules/react-native/third-party-podspecs/boost.podspec
@@ -10,7 +10,7 @@
   spec.homepage = 'http://www.boost.org'
   spec.summary = 'Boost提供免费的C++库'
   spec.authors = 'Rene Rivera'
-  spec.source = { :http => 'https://boostorg.jfrog.io/artifactory/main/release/1.76.0/source/boost_1_76_0.tar.bz2' }
+  spec.source = { :http => 'https://archives.boost.io/release/1.76.0/source/boost_1_76_0.tar.bz2' }

iOS 版本要求

Boost 1.76.0+ 要求 iOS 最低版本为 13.0,需修改 Podfile:

ruby
platform :ios, '13.0'  # 原12.x版本需升级

解决方案对比

方案复杂度持久性推荐指数
升级React Native★☆☆永久⭐⭐⭐⭐⭐
patch-package★★☆项目级⭐⭐⭐⭐
手动修改文件★★★单次有效⭐⭐

技术原理

校验机制作用

SHA256 校验保障依赖文件完整性:

plaintext
错误处理流程:
1. CocoaPods 下载 boost_1_xx_x.tar.bz2
2. 计算下载文件的SHA256值
3. 与 podspec 中预定义的校验值比较
4. 发现不匹配 → 终止安装

最佳实践

  1. 长期项目:升级至 RN 0.72.9+/0.73.2+ 修复版本
  2. 遗留项目:使用 patch-package 修改下载源
  3. 临时调试:手动编辑 boost.podspec 文件
bash
# 完整修复流程示例(使用patch-package)
npm install --save-dev patch-package
# 编辑 node_modules/.../boost.podspec
npx patch-package react-native
# 添加package.json脚本
echo '"scripts": { "postinstall": "patch-package" }' >> package.json
# 清理安装
rm -rf node_modules pods Podfile.lock
npm install && cd ios && pod install

总结

解决 Verification checksum was incorrect 错误的核心是确保 Boost 文件源可靠:

  1. 首选升级 React Native 到修复版本
  2. 次选用 patch-package 自动替换下载源
  3. 确保 iOS 平台版本 ≥13.0

此问题由 Boost 官方仓库故障引发,React Native 团队已在后续版本中默认使用可靠的 archives.boost.io 源。建议定期升级 React Native 版本以规避类似第三方依赖问题。