在本机启动 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. Android判断当前设备是否联网
  3. Android Framework 修改设备连接电脑时的显示名称
  4. 获取Android设备唯一标识(唯一序列号)
  5. Android设备屏幕问题
  6. Android设备信息管理工具类
  7. Android硬件设备检测
  8. 【实用工具】adb检测android设备
  9. android之bundle传递数据--两个activities之间

随机推荐

  1. Android(安卓)NDK学习(1) 简介
  2. EditText 所有属性
  3. 】Android横竖屏总结
  4. Android(安卓)8.1 zygote创建新应用进程
  5. android之layout_toLeftOf和layout_toRig
  6. Android(安卓)Button字母自动全部大写的
  7. 相关约束参数的含义
  8. Android(安卓)2.2.2到Android(安卓)4.2.2
  9. Hive中的case when 的写法
  10. Android之Relative布局的相关属性解析