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

Ubuntu运行Metro服务,React Native跨设备编译至iOS真机咨询

Ubuntu运行Metro并部署React Native到iOS物理设备的可行方案

前置条件

  • Ubuntu已配置React Native基础开发环境:node(v16+)、watchman、openjdk-11-jdk,项目代码已克隆到本地。
  • Mac设备装有最新兼容版Xcode,已将iOS物理设备添加到Apple开发者账号,设备信任该Mac,且Mac能正常通过Xcode给设备签名、安装App。
  • Mac、Ubuntu、iOS设备处于同一局域网,提前用ip addr(Ubuntu)记录本机局域网IP。

步骤1:配置iOS项目指向Ubuntu的Metro服务

在Mac上操作:

  1. 打开项目ios/[你的项目名]/Info.plist,添加App Transport Security配置,允许HTTP请求:
    <key>NSAppTransportSecurity</key>
    <dict>
      <key>NSAllowsArbitraryLoads</key>
      <true/>
      <key>NSAllowsLocalNetworking</key>
      <true/>
    </dict>
    
  2. 打开Xcode的Scheme配置:点击顶部项目名称 → Edit Scheme → Run → Arguments,在Environment Variables中添加两个变量:
    • RCT_METRO_PORT:值设为8081(Metro默认端口)
    • RCT_DEBUG_SERVER_HOST:值设为[Ubuntu局域网IP]:8081

步骤2:用Xcode将App安装到iOS设备

  • 用数据线连接iOS设备到Mac,Xcode中选择该设备为运行目标,点击Build and Run。安装完成后保持Xcode调试会话开启,设备不要断开Mac。

步骤3:在Ubuntu启动Metro并完成调试连接

  1. 进入Ubuntu的项目目录,启动Metro并绑定本地IP:
    npx react-native start --host [你的Ubuntu局域网IP] --port 8081
    
  2. 在iOS设备上打开已安装的App,摇晃设备调出开发者菜单,选择Configure Bundler,输入[UbuntuIP]:8081后点击Apply。
  3. 再次打开开发者菜单,选择Reload,App会从Ubuntu的Metro服务加载JS代码。此后在Ubuntu修改代码,可通过开发者菜单的Reload实时更新设备上的App。

常见问题处理

  • 网络连接失败:检查Ubuntu防火墙是否开放8081端口,执行sudo ufw allow 8081放行;确认三台设备的局域网IP属于同一网段。
  • 签名报错:确保Xcode中开发者账号配置正确,设备已添加到账号的设备列表中,且证书未过期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 22:31:14