React Native项目可在真机运行但无法在Android模拟器启动
React Native 0.70.6 项目在Android模拟器闪退且无法连接Metro的排查方案
环境信息
- 操作系统:Linux Ubuntu
- 开发方式:CLI
- React Native版本:0.70.6
问题现象
- 项目在真机可正常启动运行,但Android模拟器中安装后双击图标闪退,仅显示空白屏幕不到一秒就关闭
yarn start、yarn react-native run-android执行无报错,构建成功adb devices可正常识别模拟器,但Metro终端执行r重载时提示无应用连接- 新建RN项目可在模拟器正常运行,问题仅存在于原有项目
排查及解决步骤
1. 验证模拟器网络连通性
- 在模拟器内置浏览器中访问
http://10.0.2.2:8081(Android模拟器默认本地回环地址),确认能加载Metro服务页面 - 若无法访问,检查电脑防火墙是否拦截8081端口,或模拟器网络代理是否设置正确
2. 检查Android项目配置
- 确认
android/app/src/main/java/com/[你的包名]/MainApplication.java中ReactNativeHost的getJSMainModuleName()指向正确入口(通常为index) - 查看
android/app/build.gradle的defaultConfig,确保minSdkVersion(RN 0.70.6要求≥21)与模拟器系统版本兼容 - 检查
AndroidManifest.xml是否添加网络权限:<uses-permission android:name="android.permission.INTERNET" />
3. 重置Metro缓存并检查配置
- 执行
yarn start --reset-cache启动Metro,清除缓存后测试 - 暂时替换
metro.config.js为默认配置,排查自定义配置导致的问题:const {getDefaultConfig, mergeConfig} = require('@react-native/metro-config'); const config = {}; module.exports = mergeConfig(getDefaultConfig(__dirname), config);
4. 查看模拟器崩溃日志
- 执行
adb logcat | grep [你的应用包名],过滤应用相关日志,定位闪退具体原因(如依赖缺失、权限问题、JS加载错误等) - 也可执行
adb logcat *:E仅查看所有错误日志,快速定位异常
5. 排查依赖冲突
- 对比原有项目与新项目的
package.json,找出差异依赖,逐个移除可疑原生模块后重新构建测试 - 执行
yarn list查看依赖树,检查是否存在重复或不兼容的依赖版本(如多版本react/react-native)
内容的提问来源于stack exchange,提问作者Hakan Olgun
相关产品推荐
相关产品推荐

