【redroid】adb localhost:5555 offline
VMware Workstation使用Ubuntu22.04,adb提示localhost:5555 offline
在 VMware Workstation 中安装了 Ubuntu 22.04,网络设置为桥接模式(VMnet2)。按照 redroid
的安装指南设置并启动容器后,容器正常运行且无报错,可以通过 docker exec -it sh
进入容器。然而,使用 adb connect localhost:5555
连接时,出现连接失败的情况,提示 failed to connect localhost:5555
。使用 adb devices
查看设备列表时,显示两个设备,其中一个为 offline
状态。
可能原因:
-
网络配置问题: 在虚拟机中,网络配置可能影响
adb
的连接。桥接模式下,虚拟机与主机在同一网络,但可能存在防火墙或端口转发设置的问题。 -
adb
服务冲突: 主机和虚拟机可能同时运行adb
服务,导致端口冲突或设备识别混乱。 -
redroid
容器配置问题: 容器内部的adb
服务可能未正确启动,或存在配置错误。
解决思路:
-
检查网络配置: 确保虚拟机的网络设置正确,主机和虚拟机之间的网络通信畅通。可以尝试使用 NAT 模式或其他网络设置,排除网络问题。
-
重启
adb
服务: 关闭主机adb.exe,然后在虚拟机中执行adb kill-server
和adb start-server
,以确保adb
服务正常运行,避免端口冲突。 -
检查
redroid
容器配置: 确认容器内部的adb
服务已启动,并监听正确的端口。可以进入容器内部,使用命令检查adb
服务状态。
特殊情况:
如果以上三种方法均无法解决问题,检查报错信息是否含 'Binder driver ‘/dev/binder’ could not be opened. Terminating.'这表明系统缺少必要的内核模块,导致无法打开 /dev/binder
,从而使 ReDroid 无法正常运行。
在 Ubuntu 22.04 上运行 ReDroid 可能会遇到缺少 binder_linux
模块的问题。 这是因为某些 Ubuntu 22.04 系统默认未包含必要的内核模块,如 ashmem_linux
和 binder_linux
,这可能导致在运行 ReDroid 或类似应用时出现问题。
安装工具:
首先,确保系统已更新,并安装 dkms 和 git:
sudo apt update
sudo apt install dkms git
克隆 Anbox 内核模块源码:
Anbox 提供了所需的内核模块源码,可通过以下命令获取:
git clone https://github.com/anbox/anbox-modules.git
cd anbox-modules
复制配置文件:
将必要的配置文件复制到相应目录:
sudo cp anbox.conf /etc/modules-load.d/
sudo cp 99-anbox.rules /lib/udev/rules.d/
安装并构建内核模块:
将模块源码复制到 /usr/src/
目录,并使用 dkms
进行安装:
sudo cp -rT ashmem /usr/src/anbox-ashmem-1
sudo cp -rT binder /usr/src/anbox-binder-1
sudo dkms install anbox-ashmem/1
sudo dkms install anbox-binder/1
加载内核模块:
使用 modprobe
命令加载模块:
sudo modprobe binder_linux devices="binder,hwbinder,vndbinder"
sudo modprobe ashmem_linux