android adb流程

1. adb_trace_init  : 初始化调试级别,  通过设置ADB_TRACE=all环境变量可打开调试

    默认的服务端口为5037,也可以通过环境变量ANDROID_ADB_SERVER_PORT来设置。

执行adb命令时过程:

   *) 把命令变成字符串(例如 host:devices)

   *) 通过tcp连接到本地服务器(5037端口)

   *) 如果服务器开着的, 则发送host:version 命令请求服务器的版本号并判断是否相同,若不相同执行host:kill, 然后再启动服务器.

   *) 如果服务器没开着,则开启子线程执行 adb fork-server  server 命令, 并把错误重定向到父进程的pipe.



=============================================================================

1. 初始化 init_transport_registration

    transport的添加和删除事件异步执行。

    注册时atransport->transport_socket 和 atransport->fd 也组成一个异步执行事件, 并创建读写两个线程负责远端数据的发生和接收.

    异步事件负责分发处理从远端接收到的数据.

    所有的transport都挂在transport_list列表中(可以遍历此表列出transport).

    注销transport时关闭其异步事件处理,一般来说注销transport是由于读写线程读远端数据错误造成的。读写线程同时关闭所有使用这个transport的socket。

    在客户端,用户可以通过device_tracker_list来实时跟踪设备的插入或者拔出状态.



2. usb_vendors_init 加载所有usb设备的产商ID。代码默认支持一些usb产商, 也可以通过 ~/.android/adb_usb.ini 文件来指定usb pid.


3. usb_init : 启动线程监视usb设备变化, 每隔1s遍历/dev/bus/usb目录下的所有usb设备.


4. local_init : 初始化,默认情况会去连接本地的模拟器设备.


5. adb_auth_init  初始化密钥


6.




相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页