第8章4节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-启动 8
这个方法所做的事情就是:
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相关推荐
- 老李推荐:第5章5节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 获取系统服务引用 1...
老李推荐:第5章5节<MonkeyRunner源码剖析>Monkey原理分析-启动运行: 获取系统服务引用 上一节我们描述了monkey的命令处理入口函数run是如何调用optionPro ...
- 老李推荐:第14章4节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-端口转发 1...
老李推荐:第14章4节<MonkeyRunner源码剖析> HierarchyViewer实现原理-装备ViewServer-端口转发 在初始化HierarchyViewer的实例过程中, ...
- 老李推荐:第3章3节《MonkeyRunner源码剖析》脚本编写示例: MonkeyImage API使用示例 1...
老李推荐:第3章3节<MonkeyRunner源码剖析>脚本编写示例: MonkeyImage API使用示例 在上一节的第一个"增加日记"的示例中,我们并没有看到日记 ...
- 老李推荐: 第8章4节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-启动AndroidDebugBridge 1...
老李推荐: 第8章4节<MonkeyRunner源码剖析>MonkeyRunner启动运行过程-启动AndroidDebugBridge 上一节我们看到在启动AndroidDebugBri ...
- 老李推荐:第6章1节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览 1...
老李推荐:第6章1节<MonkeyRunner源码剖析>Monkey原理分析-事件源-事件源概览 在上一章中我们有简要的介绍了事件源是怎么一回事,但是并没有进行详细的描述.那么往下的这几个 ...
- 老李推荐:第6章6节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览-命令队列...
老李推荐:第6章6节<MonkeyRunner源码剖析>Monkey原理分析-事件源-事件源概览-命令队列 事件源在获得字串命令并把它翻译成对应的MonkeyEvent事件后,会把这些事件 ...
- 老李推荐: 第3章2节《MonkeyRunner源码剖析》脚本编写示例: MonkeyDevice API使用示例 1...
老李推荐: 第3章2节<MonkeyRunner源码剖析>脚本编写示例: MonkeyDevice API使用示例 上一节我们学习了如何通过MonkeyRunner这个类的静态方法wait ...
- 老李推荐:第14章8节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-获取控件列表并建立控件树 1...
老李推荐:第14章8节<MonkeyRunner源码剖析> HierarchyViewer实现原理-获取控件列表并建立控件树 poptest是国内唯一一家培养测试开发工程师的培训机构,以学 ...
- 老李推荐:第8章2节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-解析处理命令行参数...
老李推荐:第8章2节<MonkeyRunner源码剖析>MonkeyRunner启动运行过程-解析处理命令行参数 MonkeyRunnerStarter是MonkeyRunner启动时的入 ...
- Spring源码剖析——Bean的配置与启动
IOC介绍 相信大多数人在学习Spring时 IOC 和 Bean 算得上是最常听到的两个名词,IOC在学习Spring当中出现频率如此之高必然有其原因.如果我们做一个比喻的话,把Bean说成Sp ...
最新文章
- Pytorch 深度学习实战:视频自动打码
- MySQL退出选择表格_MySQL常用命令
- 用c语言编程飘动的红旗,C语言 飘动的红旗(要有旗杆)
- C++实现对链表的选择排序算法(附完整源码)
- 与Maven的集成测试
- PostgreSQL数据库修改sql表的方法汇总
- 【转】细说.NET 中的多线程 (一 概念)
- PyQt特殊对话框介绍
- 飞鸽传书2008一种重要心态
- python selenium下载优缺点_Python下selenium的实战和普通爬虫的对比
- Latex 图像、表格编号的字体问题
- 用于制作app store的截图的工具:Brief Wrapper —— 最便捷的应用商店屏幕快照
- 图解50道sql编写题
- “莫兰迪色系” 高级灰
- Python处理 JSON 数据
- 在线rar压缩包解密软件,忘记rar压缩包密码如何找回?
- 移动硬盘插入提示需要格式化RAW_分区变成RAW格式怎么办?手把手教你解决方法...
- 蓝桥杯试题:求数差(简单易懂无脑)java
- 直接使用word模板生成word文件
- 解决OneDrive卸载后重新安装无法启动或闪退的问题