Expo分离版React Native应用Xcode归档构建报错:libicui18n.58.dylib未加载
解决Expo分离版React Native归档构建报错:Command /bin/sh failed with exit code 134
从你的报错日志来看,核心问题是dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.58.dylib——这是Node.js依赖的ICU字符编码库找不到导致的。而且归档构建时Xcode的环境变量限制比开发模式更严格,所以之前设置脚本仅在安装时运行的方案只解决了开发构建的问题。下面是针对性的解决步骤:
1. 修复ICU4C库依赖问题
ICU4C是Node.js运行的关键依赖,要么是该库缺失,要么是版本不匹配:
- 用Homebrew重新安装ICU4C:
brew uninstall --force icu4c brew install icu4c - 如果你的项目依赖特定版本的ICU4C(比如日志里的58版本),可以指定版本安装并强制链接:
brew install icu4c@58 brew link icu4c@58 --force
2. 调整Xcode归档脚本的环境变量
归档构建时Xcode会限制环境变量范围,需要在报错的脚本(Script-B5722AD01DFB7E3F0084848F.sh)中显式配置依赖路径:
- 打开Xcode,进入项目的
Build Phases,找到对应的Shell脚本 - 在脚本开头添加以下内容,确保ICU4C和Node.js的路径被正确识别:
# 配置ICU4C路径 export PATH="/usr/local/opt/icu4c/bin:/usr/local/opt/icu4c/sbin:$PATH" export LDFLAGS="-L/usr/local/opt/icu4c/lib" export CPPFLAGS="-I/usr/local/opt/icu4c/include" # 如果使用nvm管理Node版本,添加以下内容确保Xcode能找到正确的Node source ~/.nvm/nvm.sh nvm use 你的项目指定Node版本号
3. 清理构建缓存
缓存冲突也可能导致此类问题,建议清理以下缓存:
- 清理Xcode构建缓存:选择Xcode菜单栏的
Product > Clean Build Folder,或者直接删除DerivedData目录:rm -rf /Users/waltershub/Library/Developer/Xcode/DerivedData/repticity-checkin-dyladlpnrkuavlcnilspzxthizjw - 清理Expo缓存并重新生成iOS构建文件:
expo start --clear expo prebuild --clean --platform ios注意:
prebuild --clean会重置ios目录,执行前请做好代码备份
4. 验证Expo与React Native版本兼容性
确保你的Expo SDK版本和React Native版本是官方兼容的,版本不匹配可能引发依赖链问题。可以查看项目的package.json,核对Expo官方的版本对应表,必要时升级或降级到兼容版本。
内容的提问来源于stack exchange,提问作者Walter Shub
相关产品推荐
相关产品推荐

