• 如何抓取 framework input 事件相关 log


    出现事件输入相关的问题时, 建议先 followhttp://429564140.iteye.com/blog/2355405来检测对应的设备是否有响应输入

    如果没有响应输入,则可能是 driver 或者输入设备模组问题,

    如果有输入设备响应输入, 则需要打开以下 log 开关,抓取 mobile log 检查 framework 层的对事件的处理

    [SOLUTION]

    注意:

              USER版本只能使用静态方式(修改代码)打开debug开关

              ENG版本可以使用动态方式(命令)打开debug开关


    App 层 (client) 适用于JB,KK,L,M版本:

    动态开启APP层LOG方法如下:

    adb shell setprop debug.viewroot.enable 7000
    adb shell setprop debug.view.keylog true
    adb shell setprop debug.view.touchlog true
    adb shell setprop debug.view.motionlog true
    adb shell stop
    adb shell start

    需等待手机软重启后才能生效

    静态修改请直接修改DEBUG的值。

    开启ViewRootImpl/View/ViewGroup中input event的处理过程的log开关:

    frameworks/base/core/java/android/view/viewrootimpl.java 中的 DEBUG_INPUT 开关(设置为 true);

    frameworks/base/core/java/android/view/viewgroup.java 中的 DBG_MOTION ,DBG_TOUCH开关

    frameworks/base/core/java/android/view/view.java 中的 DBG_MOTION ,DBG_TOUCH开关

    frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindow.java 中的 DBG_MOTION 开关

    frameworks/base/core/java/android/view/KeyEvent.java 中的 DEBUG 开关

    framework(server): 层
    动态打开方法 (适用于KK,L,M. 其中KK只适用于eng build, L,M适用于eng build 和user build):

    adb shell setprop sys.inputlog.enabled true

    adb shell dumpsys input

    不用重启手机就可以生效,重启手机后会失效。

    静态开启方法:

    frameworks/base/services/input/inputReader.cpp (for ICS & JBx ,KK版本)

    frameworks/native/services/inputFlinger/inputReader.cpp (for L ,M版本)

    找到以下宏定义, 并将其值改为如下

    #define DEBUG_RAW_EVENTS 1

    #define DEBUG_HACKS 1

    #define DEBUG_VIRTUAL_KEYS 1

    #define DEBUG_POINTERS 1

    #define DEBUG_POINTER_ASSIGNMENT 1

    #define DEBUG_GESTURES 1

    #define DEBUG_VIBRATOR 1

    frameworks/base/services/input/inputDispatcher.cpp (for ICS & JBx ,KK版本)

    frameworks/native/services/inputFlinger/inputDispatcher.cpp (for L, M 版本)

    找到以下宏或变量定义, 并将其值改为如下

    #else // 改 else 分支中的定义

    #define DEBUG_INBOUND_EVENT_DETAILS 1

    #define DEBUG_OUTBOUND_EVENT_DETAILS 1

    #define DEBUG_DISPATCH_CYCLE 1

    #define DEBUG_REGISTRATION 1

    #define DEBUG_INJECTION 1

    #define DEBUG_FOCUS 1

    #define DEBUG_APP_SWITCH 1

    #define DEBUG_HOVER 1

    #endif

    bool gInputLogEnabled = true;

    frameworks/base/libs/androidfw/inputTransport.cpp (for ICS & JBx 版本)

    找到以下宏或变量定义, 并将其值改为如下

    #else // 改 else 分支中的定义

    #define DEBUG_CHANNEL_MESSAGES 1

    #define DEBUG_CHANNEL_LIFECYCLE 1

    #define DEBUG_TRANSPORT_ACTIONS 1

    #define DEBUG_RESAMPLING 1

    #endif

    static bool gInputLogEnabled = true;

    frameworks/native/libs/input/inputTransport.cpp (for KK,L ,M版本)

    找到以下变量定义, 并将其值改为如下

    static bool gInputLogEnabled = true;

    因为很多input无响应的问题,常常会跟window的focus扯上关系,如果有需要

    可以用下面的命令打开ams和wms的LOG。

    adb shell dumpsys activity log x on

    adb shell dumpsys window -d enable a

  • 相关阅读:
    c++笔记3
    c++笔记2
    c++笔记1
    零点追踪(零点及量程补偿)
    优秀软件:
    Hart协议
    RL_RTX函数
    keil-rtx
    电源模块选型
    RTX51 Tiny
  • 原文地址:https://www.cnblogs.com/lysblogs/p/12066544.html
Copyright © 2020-2023  润新知