这个方法所做的事情就是:

  • 446行: 首先通过Device类的executeShellCommand方法发送类似”adb shell getprop”的命令去获得所有支持的系统属性,这个方法最终调用的是AdbHelper类的executeShellCommand方法,它会接收一个专门用来对指定shell命令如getprop的返回值进行处理的接收类实例。AdbHelper的工作原理以及处理”adb shell getprop”返回结果的接收类GetPropReceiver我们在下一章”第7章 MonkeyDevice实现原理”中会进行详细阐述。

  • 449-451行: 获得文件系统几个重要的挂载点,相信这也是给DDMS的File Explorer功能用的

获取完系统属性后,我们就要看下新设备的文件系统的那几个挂载点是怎么获得的了,我们进入到对应方法:

483   private void queryNewDeviceForMountingPoint(final Device device, final String name)

484     throws TimeoutException, AdbCommandRejectedException, ShellCommandUnresponsiveException, IOException

485   {

486     device.executeShellCommand("echo $" + name,

new MultiLineReceiver()

487     {

488       public boolean isCancelled() {

489         return false;

490       }

491

492       public void processNewLines(String[] lines)

493       {

494         for (String line : lines) {

495           if (!line.isEmpty())

496           {

497             device.setMountingPoint(name, line);

498           }

499         }

500       }

501     });

502   }

代码8-4-10 DeviceMonitor - queryNewDeviceForMountingPoint

这个跟上面的发送getprop命令有类似的地方,只是命令换了”adb shell $name”和返回值处理类是重新实现的而已,但原理都一样。这里$name换成上面调用方法形参对应的”EXTERNAL_STORAGE”,”ANDROID_DATA”和“ANDROID_ROOT”就行了,以下就是本人通过命令行执行的效果:

图8-4-4 挂载点

最后把这个几个挂载点保存起来到Device实例的mMountpoints这个映射表里面:

67   private final Map<String, String> mMountPoints = new HashMap();

...

783   void setMountingPoint(String name, String value) {

784     this.mMountPoints.put(name, value);

785   }

代码8-4-11 Device - setMountingPoint

转载于:https://blog.51cto.com/10988776/1732582

第8章4节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-启动 8相关推荐

  1. 老李推荐:第5章5节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 获取系统服务引用 1...

    老李推荐:第5章5节<MonkeyRunner源码剖析>Monkey原理分析-启动运行: 获取系统服务引用 上一节我们描述了monkey的命令处理入口函数run是如何调用optionPro ...

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

    老李推荐:第14章4节<MonkeyRunner源码剖析> HierarchyViewer实现原理-装备ViewServer-端口转发 在初始化HierarchyViewer的实例过程中, ...

  3. 老李推荐:第3章3节《MonkeyRunner源码剖析》脚本编写示例: MonkeyImage API使用示例 1...

    老李推荐:第3章3节<MonkeyRunner源码剖析>脚本编写示例: MonkeyImage API使用示例 在上一节的第一个"增加日记"的示例中,我们并没有看到日记 ...

  4. 老李推荐: 第8章4节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-启动AndroidDebugBridge 1...

    老李推荐: 第8章4节<MonkeyRunner源码剖析>MonkeyRunner启动运行过程-启动AndroidDebugBridge 上一节我们看到在启动AndroidDebugBri ...

  5. 老李推荐:第6章1节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览 1...

    老李推荐:第6章1节<MonkeyRunner源码剖析>Monkey原理分析-事件源-事件源概览 在上一章中我们有简要的介绍了事件源是怎么一回事,但是并没有进行详细的描述.那么往下的这几个 ...

  6. 老李推荐:第6章6节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览-命令队列...

    老李推荐:第6章6节<MonkeyRunner源码剖析>Monkey原理分析-事件源-事件源概览-命令队列 事件源在获得字串命令并把它翻译成对应的MonkeyEvent事件后,会把这些事件 ...

  7. 老李推荐: 第3章2节《MonkeyRunner源码剖析》脚本编写示例: MonkeyDevice API使用示例 1...

    老李推荐: 第3章2节<MonkeyRunner源码剖析>脚本编写示例: MonkeyDevice API使用示例 上一节我们学习了如何通过MonkeyRunner这个类的静态方法wait ...

  8. 老李推荐:第14章8节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-获取控件列表并建立控件树 1...

    老李推荐:第14章8节<MonkeyRunner源码剖析> HierarchyViewer实现原理-获取控件列表并建立控件树 poptest是国内唯一一家培养测试开发工程师的培训机构,以学 ...

  9. 老李推荐:第8章2节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-解析处理命令行参数...

    老李推荐:第8章2节<MonkeyRunner源码剖析>MonkeyRunner启动运行过程-解析处理命令行参数 MonkeyRunnerStarter是MonkeyRunner启动时的入 ...

  10. Spring源码剖析——Bean的配置与启动

    IOC介绍   相信大多数人在学习Spring时 IOC 和 Bean 算得上是最常听到的两个名词,IOC在学习Spring当中出现频率如此之高必然有其原因.如果我们做一个比喻的话,把Bean说成Sp ...

最新文章

  1. Pytorch 深度学习实战:视频自动打码
  2. MySQL退出选择表格_MySQL常用命令
  3. 用c语言编程飘动的红旗,C语言 飘动的红旗(要有旗杆)
  4. C++实现对链表的选择排序算法(附完整源码)
  5. 与Maven的集成测试
  6. PostgreSQL数据库修改sql表的方法汇总
  7. 【转】细说.NET 中的多线程 (一 概念)
  8. PyQt特殊对话框介绍
  9. 飞鸽传书2008一种重要心态
  10. python selenium下载优缺点_Python下selenium的实战和普通爬虫的对比
  11. Latex 图像、表格编号的字体问题
  12. 用于制作app store的截图的工具:Brief Wrapper —— 最便捷的应用商店屏幕快照
  13. 图解50道sql编写题
  14. “莫兰迪色系” 高级灰
  15. Python处理 JSON 数据
  16. 在线rar压缩包解密软件,忘记rar压缩包密码如何找回?
  17. 移动硬盘插入提示需要格式化RAW_分区变成RAW格式怎么办?手把手教你解决方法...
  18. 蓝桥杯试题:求数差(简单易懂无脑)java
  19. 直接使用word模板生成word文件
  20. 解决OneDrive卸载后重新安装无法启动或闪退的问题

热门文章

  1. 文件重命名批量处理(Matlab)
  2. React-Router ---withRouter
  3. .Net Core应用框架Util介绍(五)
  4. Java之递归遍历目录,修改指定文件的指定内容
  5. Paoding-Rose学习
  6. c# streamReader转XmlDocument读取节点
  7. MVC中validateRequest=false不起作用
  8. 复习--SQL Server (一) -系统数据库
  9. 《算法竞赛进阶指南》0.5排序
  10. 基于jsp+servlet完成的用户注册