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

React Native无法通过Metro运行Android应用,求配置排查方法

React Native Metro 连接问题排查与配置说明

一、先排查基础操作问题

  • 确认Metro服务器正常运行:启动后看终端是否有Metro is running on port 8081的提示,要是没启动或中途崩溃,肯定连不上
  • 重置adb反向代理:先执行adb reverse --remove-all清空旧代理,再重新跑adb reverse tcp:8081 tcp:8081,有时候代理会莫名失效
  • 测试网络连通性:在模拟器里打开浏览器,访问http://localhost:8081/debugger-ui,能打开说明设备和Metro网络通,打不开先解决网络问题

二、build.gradle 核心配置检查

1. 项目根目录 build.gradle

确认React Native版本和本地安装的一致,版本不匹配也会导致连接异常:

buildscript {
    ext {
        buildToolsVersion = "33.0.0"
        minSdkVersion = 21
        compileSdkVersion = 33
        targetSdkVersion = 33
        // 这里的版本号要和本地package.json里的react-native版本对应
        reactNativeVersion = "0.72.0"
    }
    // 其他配置...
}

2. app模块下的 build.gradle

重点检查debug构建变体的配置,确保调试模式没被禁用:

android {
    buildTypes {
        debug {
            // 必须设为true,否则原生层不会开启调试连接逻辑
            debuggable true
            // 用Hermes的话,debug模式加这个参数开启源码映射,方便调试
            hermesFlags = ["-O", "-output-source-map"]
        }
    }

    dependencies {
        implementation "com.facebook.react:react-native:${reactNativeVersion}"
        // 其他依赖...
    }
}

3. 配置的运作逻辑

React Native在debug模式下启动时,原生代码会自动尝试连接本地8081端口的Metro服务器:

  • debuggable true是核心开关,开启后才会触发调试连接逻辑
  • adb反向代理是把设备的8081端口映射到电脑的8081端口,让设备能访问电脑上的Metro服务
  • 如果修改了默认Metro端口,还要同步修改adb反向代理的端口,以及原生代码里的端口配置

三、其他可能影响的文件

  • 删除android/app/src/main/assets/index.android.bundle:这个是离线bundle包,要是存在,debug模式下App会直接加载本地bundle,不会去连Metro,debug环境下删掉即可
  • 暂时禁用Flipper:如果集成了Flipper调试工具,部分版本可能拦截Metro连接,先注释掉ReactNativeFlipper.java里的相关配置试试

内容的提问来源于stack exchange,提问作者Fapi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 07:15:50