formAdbRequest我们在之前已经分析过,做的事情就是组建好ADB协议的命令以待发送给ADB服务器,在我们558行中最终组建好的ADB协议命令将会如下:

“host-serial:xxx:forward:localPortSpec;remotePortSpec”

其中xxx就是代表目标设备的序列号,可以通过”adb devices -l”获得:

图14-4-1获取设备序列号

所以在最终这个ADB协议命令字串将会变成:

“host-serial:HT21ATD05099:foward:4939;4939”

而参照ADB协议,实际上就相当于ADB命令行客户端命令的:

“adb -s HT21ATD05099 forward tcp:4939 tcp:4939”

这其实跟第13章第2小节手动发送ViewServer端口转发命令是一样的,只是这里多了个-s参数来指定要转发的端口属于哪个设备上的ViewServer而已。

到现在为止我们已经完成了端口转发的第2步了,那么我们往下看第3步,做的事情就是把代表目标设备的Device实例和本地ViewServer的转发端口做为键值对给保存起来到sDevicePortMap这个成员变量里面:

sDevicePortMap.put(device, Integer.valueOf(localPort));

sDevicePortMap这个成员变量是个HashMap:

55  private static final HashMap<IDevice, Integer> sDevicePortMap = new HashMap();

代码14-4-5 DeviceBridge - sDevicePortmap

注意这个变量是很重要的,因为HierarchyViewer连接对应的设备的socket就是靠它来提供对应的本地ViewServer转发端口号的。

最新文章

  1. Tiny Mapper
  2. Windows和Linux都有的Copy-on-write技术
  3. ORA-10635: Invalid segment or tablespace type
  4. requirejs学习
  5. 使用反射将DataTable的数据转成实体类
  6. JS 学习笔记--JS中的事件对象基础
  7. #Cocos2d+lua#android+Eclipse工程编译设置
  8. Linux学习笔记2——Linux中常用文件目录操作命令
  9. Asp.Net WebApi+Microsoft.AspNet.WebApi.Core 启用CORS跨域访问
  10. HostingEnvironment RegisterObject和QueueBackgroundWorkItem
  11. JMeter脚本获取变量名、检验字符串值
  12. git命令行常用几个指令(细节问题)
  13. 记录未预编译文件“*.aspx”,因此不能请求该文件的几种处理办法
  14. VueJs笔记
  15. vue2入坑随记(一)-- 初始全家桶
  16. jquery-menu-aim插件实现二级导航
  17. Azure Paas SQL 修改用户名密码的相关问题
  18. POJ-1456 Supermarket(贪心,并查集优化)
  19. 【Kafka】Broker之Server.properties的重要参数说明
  20. 【BZOJ】1706: [usaco2007 Nov]relays 奶牛接力跑

热门文章

  1. AMD的cpu如何安装Mac OS
  2. List&lt;bean&gt;转换Jsonarray知识心得
  3. C++指向常量的指针和常指针
  4. JTextArea与TextArea自动换行和滚动条的区别对比
  5. 一次测试测试(C++11)智能指针引用的崩溃结论
  6. .Net软件开发面试技巧
  7. spring mvc 结合 Hessian 配置
  8. 使用postfix在debian上配置邮件服务器
  9. 2015年ACM-ICPC亚洲区域赛合肥站网络预选赛H题——The Next (位运算)
  10. Action的创建和配置