从其他设备导入的React Native项目无法在Android模拟器运行怎么修复
报错原因与修复方案
该报错核心原因是跨系统换行符格式不兼容:
你导入的项目最初在Windows系统上生成,项目内android/gradlew脚本使用Windows标准的CRLF(\r\n)换行格式;你当前使用的是macOS/Linux类Unix系统,仅识别LF(\n)换行符,因此会把脚本末尾多余的\r识别为文件名的一部分,触发env: sh\r: No such file or directory错误。你本地自建的项目可以正常运行,是因为创建时自动适配了当前系统的换行符规则,不存在格式冲突。
修复步骤
你可以任选以下一种方法修复:
- 方法一:命令行直接转换gradlew换行格式
首先进入项目的android目录:
执行转换命令:cd android
已安装dos2unix工具的情况下直接运行:dos2unix gradlew
未安装dos2unix的macOS用户可直接运行sed命令转换:sed -i '' 's/\r$//' gradlew
Linux用户运行sed命令可去掉空参数:sed -i 's/\r$//' gradlew - 方法二:VS Code可视化修改换行符
打开项目内android/gradlew文件,点击编辑器右下角状态栏显示的CRLF标识,在弹出的换行符选项中选择LF,保存文件即可完成格式转换。 - 方法三:全局配置Git规则避免后续再出现同类问题
如果你经常需要导入不同设备的项目,可以全局配置Git的换行符自动转换规则,执行命令:git config --global core.autocrlf input
该配置会在你拉取代码时保留LF格式,提交代码时自动将CRLF转换为LF,适配类Unix系统的使用需求。
验证修复
修复完成后回到项目根目录,重新执行npx react-native run-android即可正常编译安装应用。
内容的提问来源于stack exchange,提问作者Siva K
相关产品推荐
相关产品推荐

