• 老李推荐:第14章4节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-端口转发 3


    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转发端口号的。

  • 相关阅读:
    剑指offer--50.滑动窗口的最大值
    剑指offer--49.矩阵中的路径
    剑指offer--48.机器人的运动范围
    剑指offer--47.数据流中的中位数
    剑指offer--46.字符流中第一个不重复的字符
    剑指offer--45.二叉树的深度
    剑指offer--44.两个链表的第一个公共结点
    剑指offer--43.连续子数组的最大和
    海盗分宝石问题
    C++数组名退化指针实例
  • 原文地址:https://www.cnblogs.com/poptest/p/5099773.html
Copyright © 2020-2023  润新知