zoukankan      html  css  js  c++  java
  • 为什么HierachyViewer无法连接真机调试

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

    在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源码根目录frameworksaseservicesjavacomandroidserverwmWindowManageService.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:
    使用以下命令关闭View Server:
    adb shell service call window 2 i32 4939
  • 相关阅读:
    检测后缀表达式的合法性
    对表达式进行空白符预处理
    字符串替换
    中缀表达式的计算
    Linux shell编程
    Linux常用shell
    [转载]shell脚本编写规范
    [转载]Linux文件类型
    Linux的进程
    Linux进入命令行模式
  • 原文地址:https://www.cnblogs.com/ldq2016/p/6668076.html
Copyright © 2011-2022 走看看