在虚拟机中调试android 手机的方法
由于Google的源码是在ubuntu下编译的,Google官方提供了较为详细的编译说明,所以使用 了ubuntu 14.04 进行编译,编译完成后有一个问题,如何进行源码调试。(源代码在虚拟机中)
使用 virutalbox Extension Pack
首先的想法是直接使用中virutalBox 的USB 把手机给连到guest,折腾了一下比较麻烦, 首先需要安装virutalbox 的 Extension Pack,下载地址
管理->全局设定->扩展,选择下载的扩展包,安装。接下来这步很关键,上次就是这里没有搞定。
sudo usermod -a -G vboxusers <username>
执行命令后需要注销,重新登录。
VirtualBox 虚拟机设置 -> usb 添加需要接入 guest 的 usb 设备。
> lsudo lsusb
Bus 001 Device 002: ID 18d1:4ee7 Google Inc.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 80ee:0021 VirtualBox USB Tablet
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
使用端口映射
后面想到adb 其实是通过tcp 和Android设备通讯, 所以只要做端口映射打个通道,就可以解决在virutalBox的虚拟机里调试手机的问题。
tcp 0 0 127.0.0.1:5037 0.0.0.0:* LISTEN 26706/adb
在guest里执行下面两条命令
autossh -nNL1234:localhost:1234 10.0.2.2
autossh -nNL5037:localhost:5037 10.0.2.2
其中 10.0.2.2 是host的ip,5037 是adb 默认监听的端口,1234 是gdbserver 监听的端 口,利用ssh在host和guest 打个通道。
在host执行adb forward 命令
adb forward tcp:1234 tcp:1234
这条命令在host和手机上建立了一条通道。
这样就搞定了adb的连接问题。执行这三行命令后在ubuntu下, adb devices 可以看到下面的输出, 问题得到解决。
> adb devices
List of devices attached 01b00af93dc59e163 device
gdbclient system_server :1234 4475
输出正常,可以开始调试了。
在虚拟机中调试android 手机的方法
https://usmacd.com/cn/android_emulator_debug/