You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 11:30:56