如何在VS Code开发容器中使用Windows主机的Android模拟器运行RN Expo应用
解决Dev Container中Expo连接Windows主机AVD的问题
核心问题分析
容器内无法识别Android SDK路径、无法连通主机AVD的adb端口,本质是容器环境缺失Android工具依赖、主机与容器的网络隔离导致的连接失败。
步骤1:在容器内配置Android SDK与adb依赖
- 在
postCreateCommand.sh中添加adb安装与环境变量配置:# 安装adb工具(适配Ubuntu/Debian环境) apt-get update && apt-get install -y android-tools-adb # 设置Android SDK环境变量(Expo需依赖此路径识别adb) export ANDROID_HOME=/usr/local/android-sdk export PATH=$PATH:$ANDROID_HOME/platform-tools - 若需持久化环境变量,可将上述
export命令写入容器的~/.bashrc或~/.zshrc文件。
步骤2:打通主机与容器的adb网络连接
- 在Windows主机上配置adb远程端口:
打开主机命令提示符(CMD/PowerShell),执行:
(确保AVD已启动,且主机adb tcpip 5555adb devices能正常检测到该模拟器) - 获取主机局域网IP:
在主机CMD执行ipconfig,找到当前网络的IPv4地址(如192.168.3.10)。 - 在容器内连接主机AVD:
替换为你的主机IP后执行:
验证连接:执行adb connect 192.168.3.10:5555adb devices,若输出包含主机AVD设备则连接成功。
步骤3:配置端口转发与防火墙放行
- Dev Container端口转发:
在.devcontainer.json中添加端口转发规则:
或在VS Code的「Ports」面板手动添加"forwardPorts": [5555], "portsAttributes": { "5555": { "protocol": "tcp", "label": "ADB Remote Debug" } }5555端口映射。 - Windows防火墙放行:
打开Windows Defender防火墙,创建入站规则:- 允许TCP端口
5555 - 允许来自容器所在网络的访问(如WSL2子网,可直接选择「所有网络」简化配置)
- 允许TCP端口
步骤4:启动Expo并连接AVD
执行npx expo start --android,此时Expo会自动识别已连接的AVD设备,无需扫码即可在模拟器中加载应用。
内容的提问来源于stack exchange,提问作者Raf uchiha
相关产品推荐
相关产品推荐

