文档章节

如何在Root的手机上开启ViewServer,使得HierachyViewer能够连接

youthflies
 youthflies
发布于 2013/12/06 07:23
字数 801
阅读 199
收藏 6

关于什么是Hierarchy Viewer,请查看官方文档:http://developer.android.com/tools/debugging/debugging-ui.html。个人理解:Hierarchy Viewer能获得当前手机实时的UI信息,给界面设计人员和自动化测试人员带来极大的便利。写android自动化的时候,能够获取控件的id属性。

在Android的官方文档中提到:
To preserve security, Hierarchy Viewer can only connect to devices running a developer version of the Android system.
即:出于安全考虑,Hierarchy Viewer只能连接Android开发版手机或是模拟器(准确地说,只有ro.secure参数等于0且ro.debuggable等于1的android系统)。Hierarchy Viewer在连接手机时,手机上必须启动一个叫View Server的客户端与其进行socket通信。而在商业手机上,是无法开启View Server的,故Hierarchy Viewer是无法连接到普通的商业手机。
 
Android源码实现这一限制的地方在:
ANDROID源码根目录\frameworks\base\services\java\com\android\server\wm\WindowManageService.java
中的一段:
=====================================================================================
public boolean startViewServer(int port) {
if (isSystemSecure()) {
return false;
}

if (!checkCallingPermission(Manifest.permission.DUMP, ”startViewServer”)) {
return false;
}

….
=====================================================================================
 
检验一台手机是否开启了View Server的办法为:
adb shell service call window 3
若返回值是:Result: Parcel(00000000 00000000 ‘……..’)” 说明View Server处于关闭状态
若返回值是:Result: Parcel(00000000 00000001 ‘……..’)” 说明View Server处于开启状态
若是一台可以打开View Server的手机(Android开发版手机 、模拟器or 按照本帖步骤给系统打补丁的手机),我们可以使用以下命令打开View Server:
adb shell service call window 1 i32 4939
使用以下命令关闭View Server:
adb shell service call window 2 i32 4939
实现步骤:
经过一番调查和实践,我发现其实只要是root,并且装有busybox的手机,通过修改手机上/system/framework中的某些文件,就可以开启。本文参考了 http://blog.apkudo.com/tag/viewserver/ 以下是具体步骤(本人基于Windows,若你是Linux的操作系统,直接看原帖吧):
前提是:你的手机已经获得ROOT权限,且有BUSYBOX
另外:请仔细阅读本帖的评论,或许你会有新的收获。
 
1.将商业手机通过USB连接PC,确保adb服务运行正常
2.备份手机上/system/framework/中的文件至PC。备份的时候请确保PC上保存备份文件的文件夹结构与手机中的/system/framework相同
例如:新建 ANDROID_SDK_ROOT\system\framework文件夹 ( 本文出现的ANDROID_SDK_ROOT指你安装Android SDK的根目录
接着在cmd中跳转至ANDROID_SDK_ROOT\platform-tools文件夹下,输入以下代码进行备份:
adb pull /system/framework  ANDROID_SDK_ROOT\system\framework
3.进入adb shell,输出BOOTCLASSPATH:
推荐的做法:
1. 在adb shell中echo $BOOTCLASSPATH > /sdcard/bootclasspath.txt
2. 退回到windows cmd中,输入adb pull /sdcard/bootclasspath.txt
3. bootclasspath.txt将会保存在 C:\Users\你的用户名 文件夹下
在第十五步中将会用到这个txt中的内容。
4.下载baksmali 和smali工具。这两个工具是用来反编译和编译odex文件的。
下载地址:

假设我将这两个jar都下载到了ANDROID SDK根目录下。

继续阅读

本文转载自:HierachyViewerhttp://www.yeetrack.com/?p=853

youthflies
粉丝 45
博文 247
码字总数 139731
作品 0
海淀
QA/测试工程师
私信 提问
在Root的手机上开启ViewServer,使得HierachyViewer能够连接

前期准备: 关于什么是Hierarchy Viewer,请查看官方文档:http://developer.android.com/tools/debugging/debugging-ui.html。个人理解:Hierarchy Viewer能获得当前手机实时的UI信息,给界...

jdroid
2015/09/01
95
0
Android工具HierarchyViewer 代码导读(1) -- 功能实现演示

HierarchyViewer是Android SDK包中一个非常好用的工具,你在 android-sdks/tools目录下可以找到它。通过HierarchyViewer,即使没有应用的源代码,我们也可以非常直观地浏览Activity中控件的层...

知平软件
2012/08/02
693
1
Android工具:Hierarchy Viewer

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 https://blog.csdn.net/p106786860/article/details/70494801 一、配置Hierarchy Viewer 非r...

1024工场
2017/04/23
0
0
教你破解Android手机图案锁

我们在之前的《忘记了手机锁怎么办》这篇文章中已经介绍了暴力删除手机图形锁、密码锁的方法。今天介绍另外一种破解图案锁的方法。不过先要提醒大家,千万不要做坏事呦! 一、前提条件 手机需...

MK_ROM
2015/11/10
271
0
wifi连真机调试(no root)

最近要调试的机器比较多,插来插去很麻烦。查了一些帖子,发现可以wifi连接手机调试,但大部分需要root,看到Google play上有个叫 ADB wireless的app写着no root,下来试试,还真可以。 不过...

火云
2016/12/28
47
0

没有更多内容

加载失败,请刷新页面

加载更多

shangcheng-my

1.数据库主键、外键类型为bigint,那么在后台应该用什么类型的变量定义? 后台用string接收,因为前段传过来的一般都是json字符串,后台直接接收,mysql是可以吧数字类型的字符串转换为对应的...

榴莲黑芝麻糊
昨天
1
0
微服务架构依赖图

基于spring-cloud-alibaba + dubbo

龙影
昨天
3
0
Centos7 安装zabbix-agent

rpm -i https://repo.zabbix.com/zabbix/4.2/rhel/6/x86_64/zabbix-release-4.2-2.el6.noarch.rpm 可以到https://repo.zabbix.com/zabbix找到对应的版本 yum install zabbix-agent -y 出现E......

abowu
昨天
8
0
文本编辑器GNU nano 4.4 发布

GNU nano 4.4 "Hagelslag" 更新日志: 启动时,光标可以放在第一个或最后一个出现位置 字符串前面带有+/string 或 +?string的字符串。 发生自动硬包装时((--breaklonglines),任何前导引号...

linuxCool
昨天
7
0
你知道字节序吗

字节序 最近在调一个自定义报文的接口时,本来以为挺简单的,发现踩了好几个坑,其中一个比较“刻骨铭心”的问题就是数据的字节序问题。 背景 自定义报文,调用接口,服务端报文解析失败 iO...

杭城小刘
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部