• 为什么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
  • 相关阅读:
    Understanding String Table Size in HotSpot
    Java性能优化之JVM GC(垃圾回收机制)
    为什么新生代内存需要有两个Survivor区
    jmap命令详解
    JVM GC 机制与性能优化
    JVM1.6 GC详解
    jstat命令详解
    锁的性能相关
    JAVA AQS源码分析
    kafka的安装 (单机)
  • 原文地址:https://www.cnblogs.com/ldq2016/p/6668076.html
Copyright © 2020-2023  润新知