如何配置本地服务器Port forwarding至Expo安卓模拟器
安卓Expo模拟器通过端口转发访问笔记本本地服务器配置步骤
前置确认
- 本地服务器已在笔记本正常启动,记录服务监听的端口号(下文统一用
<你的服务端口>指代,比如3000、8080等常见开发端口) - 安卓模拟器已正常启动,Expo运行环境可正常识别该模拟器(可正常在模拟器内启动Expo Go/自定义Dev Client)
- Android SDK的platform-tools路径已加入系统环境变量,终端可直接调用
adb命令
操作步骤
- 验证adb连接状态
终端执行adb devices,输出列表中能看到当前运行的模拟器实例即为正常,示例输出:
如果看不到设备,依次执行List of devices attached emulator-5554 deviceadb kill-server、adb start-server重启adb服务后重新查询。 - 配置端口反向转发
终端执行以下命令,将两处<你的服务端口>替换为本地服务实际占用的端口号:adb reverse tcp:<你的服务端口> tcp:<你的服务端口>该规则会将安卓模拟器内部的指定端口,直接映射到笔记本本机的对应端口,规则在adb连接正常时持续生效。
如果你同时启动了多个模拟器实例,需要指定目标设备配置规则:先从adb devices输出中拿到目标模拟器的标识(比如emulator-5554),再执行adb -s <模拟器标识> reverse tcp:<你的服务端口> tcp:<你的服务端口>。 - Expo端访问配置
- 不管是Expo Go还是自定义Dev Client,直接将请求地址写为
http://localhost:<你的服务端口>即可访问本地服务,无需使用10.0.2.2这类模拟器默认网关地址。 - 如果本地服务走HTTP明文协议(非HTTPS),且使用安卓9及以上版本系统的镜像,需要在项目的
android/app/src/main/AndroidManifest.xml文件的<application>标签下添加android:usesCleartextTraffic="true"属性,否则明文请求会被安卓系统网络安全规则拦截。
- 不管是Expo Go还是自定义Dev Client,直接将请求地址写为
常见失效排查
- 模拟器重启、adb服务重启后,端口转发规则会自动清空,需要重新执行
adb reverse命令配置 - 确认本地服务监听地址为
127.0.0.1或0.0.0.0,如果服务仅绑定了某一块物理网卡的IP,转发规则无法命中 - 配置规则时暂时关闭笔记本上的全局代理、VPN类软件,这类工具会劫持环回网卡流量导致转发失效
- 如果需要删除单条转发规则,执行
adb reverse --remove tcp:<你的服务端口>;清空所有转发规则执行adb reverse --remove-all即可
内容的提问来源于stack exchange,提问作者Pranava Mohan
相关产品推荐
相关产品推荐

