在本机启动 Android, 再用本机的的 adb 去连接

adb connect 127.0.0.1:5555


而后 adb devices 查看

user@ubuntu:~$ adb devices
List of devices attached
emulator-5554 device
127.0.0.1:5555device

为何会出现两个设备? 我并没有运行 emulator?


如果你修改 system/build.prop 加入下面,修改adbd 的监听端口

service.adb.tcp.port=5566

就只出现一个设备

127.0.0.1:5566 device


这又是为何? 经过调查分析有了答案:


1) adb 启动就连接5555端口

启动 adb 的时候, adb 通过 "adb fork-server server" 启动 adb deamon

而后deamon 就会去找本地的 5555 端口, 直到 5555+32

ref: jellybean/system/core/adb/transport_local.c#140

为何连接上就叫 emulator, 这是因为 adb 期望自动为用户连接本机的emulator ( 每个emu两个端口, 可以多达16个)

如果你不用service.adb.tcp.port=5566 而用 5565 就是出现 emulator-5564, 因为连接只测试奇数端口


2) 为何连接叫emulator-5554 而不是emulator-5555

这是因为缺省emulator的 console 端口是 5554 ( 应该可以用 telnet 连接与 emulator 交互(还没有试验)) , 而adb 的端口是console端口 +1 就是 5555

当使用adb emu <command> 可能就是把<command> 发到5554端口


总结:

以前以为 emulator 是构造虚拟的 usb设备, 看来不是

adb 连接 emulator 也是通过 tcp 连接的

如果你有程序监听 5555 端口, 会被 adb 认为是 emulator

更多相关文章

  1. Android网络连接处理学习笔记
  2. 使用Javaweb开发的WebService部署到Tomcat,使用Android调用的遇到
  3. 【Android(安卓)Native Code开发系列】 五 运行、调试编译的Nati
  4. Android判断当前设备是否联网
  5. Android(安卓)Studio——理解Intent和Intent Filter
  6. android中 检查网络连接状态的变化,无网络时跳转到设置界面
  7. Android(安卓)SDK 有bug
  8. Android系统各种类型的service刨根解读
  9. Android网络连接处理学习笔记

随机推荐

  1. Android(安卓)Studio项目中使用 AndroidX
  2. Android在线更新SDK的方法(使用国内镜像)
  3. Android调用OpenGL绘制曲线入门手册
  4. ROS(indigo) turtlebot2 + android一些有
  5. android view 原理 -- measure 分析与应
  6. Android(安卓)Theme主题样式开发注意点
  7. Android编译系统简要介绍和学习计划
  8. Android(安卓)SparseArray与HashMap与Arr
  9. 开关按钮ToggleButton和开关Switch
  10. asmack xmpp应用遇到的问题