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

如何在同一安卓设备运行多个React Native应用?实操报错求助

解决同一安卓设备运行两个React Native应用的端口冲突问题

我之前也碰到过一模一样的场景——要在同一台安卓设备上跑两个RN应用,分别用不同端口启动Metro,但执行react-native run-android时总是出问题。以下是我亲测有效的解决方案:

第一步:确认Metro服务的端口绑定(你已完成,但再核对下)

确保两个应用的Metro服务分别稳定绑定到指定端口:

  • 第一个应用终端执行:npm start -- --port=8080
  • 第二个应用终端执行:npm start -- --port=8081
    确认两个终端都显示Metro服务正常启动,没有端口占用报错。

第二步:启动安卓应用时明确指定对应端口

默认的react-native run-android会自动尝试连接8080端口,但如果启动命令没和对应Metro端口关联,就会出现连接失败。所以启动时要加上端口参数:

  • 启动第一个应用:react-native run-android --port 8080
  • 启动第二个应用:react-native run-android --port 8081

第三步:手动配置ADB端口转发(关键修复步骤)

有时候设备无法自动完成端口映射,需要手动执行转发命令,让设备能访问电脑上的Metro服务:

# 为第一个应用转发8080端口
adb reverse tcp:8080 tcp:8080
# 为第二个应用转发8081端口
adb reverse tcp:8081 tcp:8081

执行完这两个命令后,设备就能正确连接到对应端口的Metro服务了。

第四步:如果仍无法加载JS Bundle,手动指定地址

如果应用启动后显示“无法加载JS bundle”,可以摇晃设备打开开发者菜单,选择「Change Bundle Location」,然后输入对应端口的地址:

  • 第一个应用输入:localhost:8080/index.bundle
  • 第二个应用输入:localhost:8081/index.bundle

额外注意事项

  • 务必保证两个应用的包名(package name)完全不同,安卓系统不允许同一包名的应用共存,这也是容易被忽略的启动失败原因。
  • 检查电脑上的8080、8081端口是否被其他进程占用,可以用lsof -i :8080(Mac/Linux)或netstat -ano | findstr :8080(Windows)排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:41:47