构建服务器执行pod install时Podfile.lock被修改的原因排查
问题:React Native构建中
pod install --deployment移除hermes-engine的tag值? 我在多台macOS机器上构建React Native应用,其中一台机器执行pod install --deployment时失败,提示:
[!] There were changes to the podfile in deployment mode: M hermes-engine
Podfile.lock里的hermes-engine条目被修改,原内容:
hermes-engine: :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" :tag: hermes-2023-08-07-RNv0.72.4-813b2def12bc9df02654b3e3653ae4a68d0572e0
修改后:
hermes-engine: :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" :tag: ''
其他机器执行该命令能成功安装且Podfile.lock无变化,已清理所有机器的CocoaPods缓存,问题仍存在。
各机器工具版本对比
| 工具 | Mac1(正常) | Mac2(正常) | Mac3(异常) |
|---|---|---|---|
| OS | macOS 13.6 (ARM64) | macOS 13.3.1 (X64) | macOS 13.4.1 (ARM64) |
| Shell | 5.9 | 5.9 | 5.9 |
| Node | 18.17.1 | 18.17.0 | 18.17.1 |
| Yarn | 1.22.19 | 1.22.19 | 1.22.19 |
| npm | 9.6.7 | 9.6.7 | 9.6.7 |
| CocoaPods | 1.12.1 | 1.12.1 | 1.12.1 |
| Xcode | 14.3.1 | 14.3 | 14.3.1 |
| Java | 17.0.7 | 17.0.7 | 17.0.8 |
| Ruby | 2.6.10 | 2.6.10 | 2.6.10 |
可能的原因及解决方向
- hermes-engine.podspec解析差异:检查异常机器上的
hermes-engine.podspec文件,确认s.source部分的tag配置是否存在条件判断(比如针对ARM64/X64的分支逻辑),导致该环境下tag未被正确赋值。 - Xcode命令行工具路径/权限问题:执行
xcode-select -p对比三台机器的Xcode路径是否一致;检查项目目录及node_modules的读写权限,确保CocoaPods能正常读取文件。 - Ruby依赖不一致:虽然Ruby版本相同,但相关gem包可能有差异。执行
gem list对比三台机器的cocoapods-core等CocoaPods依赖包版本,确保完全一致。 - 缓存清理不彻底:除CocoaPods缓存外,还需清理:
- 删除
node_modules目录,重新执行yarn install或npm install - 删除iOS目录下的
Pods文件夹和Podfile.lock,重新拉取依赖 - 执行
gem cleanup清理Ruby缓存
- 删除
内容的提问来源于stack exchange,提问作者FIL
相关产品推荐
相关产品推荐

