Docker中运行React-Native Android开发环境失败求助
解决Docker容器内React-Native无法连接主机Android模拟器的问题
问题核心
执行docker-compose up时触发错误:
error Failed to install the app. Make sure you have an Android emulator running or a device connected
已在主机启动Nexus 5 API 30模拟器,但容器内执行adb connect localhost:5555无法建立连接,且无法修改AVD端口配置。
解决方案步骤
1. 配置主机adb允许远程连接
主机adb默认仅绑定localhost,容器无法直接访问。执行以下命令重启adb服务并开放所有接口:
adb kill-server adb -a nodaemon server --port 5037 &
2. 修改容器内adb连接目标
无需直接连接模拟器端口,容器应通过主机adb服务器获取设备列表。更新docker-compose.yaml的entrypoint:
entrypoint: ['bash', '-c', 'adb connect host.docker.internal:5037 && adb devices && yarn android']
- Linux系统中若
host.docker.internal无法识别,替换为主机实际IP(如192.168.1.100)
3. 对齐adb版本
容器与主机的adb版本必须一致,否则会触发连接失败:
- 主机执行
adb version查看版本信息 - 进入容器执行
adb version对比,版本不符时需更换镜像或在容器内安装对应版本的adb
4. 优化Docker配置
- 移除
docker-compose.yaml中network_mode: host下冗余的ports映射(host模式下端口映射无效) - 删除Dockerfile中
USER node后的RUN yarn install(挂载主机代码目录后,构建阶段的安装无意义),可在entrypoint中加入依赖安装步骤:entrypoint: ['bash', '-c', 'yarn install && adb connect host.docker.internal:5037 && adb devices && yarn android'] - 给容器内node用户添加adb权限,在Dockerfile中添加:
USER root RUN usermod -aG plugdev node USER node
5. 验证连接状态
容器启动后,查看adb devices输出,若能显示主机的模拟器,说明连接成功,此时yarn android可正常安装应用。
内容的提问来源于stack exchange,提问作者Louis Eiden
相关产品推荐
相关产品推荐

