ADB Forward遇到的问题总结

博客探讨了在Android开发中遇到的ADB Forward问题,当使用ADB Forward进行socket通信时,可能出现PC端成功连接但实际未与设备端应用连接的情况。原因是ADB服务器作为转发器,使得连接对象变为ADB服务器自身而非设备上的目标程序。解决办法是通过握手数据包进行连通性验证,确保真正建立连接。
摘要由CSDN通过智能技术生成

最近在项目中发现adb forward在使用中会有问题,总结留待以后查看。

 

在Device中启动app,同时开启线程A,创建server socket监听PC连接,如果PC连接成功后,结束线程并关闭该连接,同时启动另一个app,同样开启线程B,创建server socket监听PC发送的数据。由于设计问题,PC在连接线程B的socket时,只发送一次数据并等待响应,此时经常会出现PC成功建立连接,但是发送数据时马上收到-1响应,表示线程B的socket并没有于PC连接成功,返回Device中查看log确实server处于accpet的等待连接状态。

 

至于问题发生的原因,经过网上查询发现原来是ADB Forward在搞鬼,因此转以下查询到的文章备用:

 

1) ADB-server

运行在PC端,是一个始终在后台运行的进程,作为与手机端交互的唯一接口。ADB-server处理ADB-client的请求,一部分请求无须与设备交互,直接在PC本地完成;剩下的请求需要与设备端的adbd交互,ADB-server起到了一个switcher的作用。

2) ADB-client

运行在PC端,可以同时存在多个。每个ADB-client由用户启动,完成多种功能。其作用是与ADB-server交互,实现用户请求的功能。

3) adbd

运行在设备端的常驻进程,同时只存在一个。作用是接收PC端的ADB-server发来的请求,并作出对应操作。

这三个可执行程序都是同一套代码编译出来的,位于<Android Source Dir>/system/core/adb/

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值