`

如何抓取 framework input 事件相关 log

 
阅读更多
[DESCRIPTION]

出现事件输入相关的问题时, 建议先 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
分享到:
评论

相关推荐

    Robot framework 上传 data folder

    本篇将详细介绍如何使用 Robot Framework 上传 "data folder",以及该过程中的相关知识点。 首先,我们需要理解 Robot Framework 的核心概念:测试套件(Test Suite)、测试用例(Test Case)和关键字(Keyword)。...

    Android代码-Tool-Log

    This is a lightweight Android log component. 中文介绍 Features [x] Support for all basic data types, arrays、Map、List、Bundle、Intent、Reference、Throwable、Collection [x] Support Json, ...

    Log4net + Nunit Demo

    public void Add_ValidInput_ReturnsCorrectResult() { var myClass = new MyClass(); int result = myClass.Add(2, 3); Assert.AreEqual(5, result); } } ``` 运行这个测试,NUnit将检查`Add`方法是否按预期...

    django rest framework vue 实现用户登录详解

    首先,我们要了解Django REST framework以及Vue.js是什么。Django REST framework是一个强大且灵活的工具,用于构建Web API。Vue.js则是一个渐进式JavaScript框架,用于构建用户界面。将这两个技术结合起来实现用户...

    robotframework-metrics:基于robotframework output.xml的指标报告的生成

    机器人框架指标报告通过解析robotframework output.xml文件创建出色HTML(仪表盘视图)报告 样品报告v3.2.2新增功能用于解析指标报告output.xml的源代码这个怎么运作: 使用robotframework API读取output.xml文件...

    ZendFramework中文文档

    1. Introduction to Zend Framework 1.1. 概述 1.2. 安装 2. Zend_Acl 2.1. 简介 2.1.1. 关于资源(Resource) 2.1.2. 关于角色(Role) 2.1.3. 创建访问控制列表(ACL) 2.1.4. 注册角色(Role) 2.1.5. 定义访问...

    RobotFramework内建关键字文档

    Robot Framework是基于Python和Java的一种自动化测试框架,广泛应用于测试驱动开发。它提供了一个简单的语法,用表格格式来编写测试用例,这使得即使是没有编程背景的测试人员也能快速上手。Robot Framework内建...

    robotframework Selenium2关键字说明

    ### RobotFramework Selenium2 关键字详解 #### 一、引言 RobotFramework 是一个通用的自动化测试框架,它支持多种编程语言(如Python、Java等)进行扩展,并且可以通过多种库来实现不同的功能。其中,Selenium2...

    zend framework编码规范

    ### ZEND Framework 编码规范详解 #### A.1. 总论 **范围与目的** 在软件开发领域,特别是基于 ZEND Framework 的项目中,统一且规范化的编码标准至关重要。良好的编码标准不仅能提升代码质量,还能增强项目的可...

    spring-framework-reference-4.1.2

    Using Log4J ............................................................................................. 14 II. What’s New in Spring Framework 4.x ......................................................

    适用于linux的命令解析工具,支持 -model=./yolov5l.onnx 和-help 命令解析,向我们常看到命令工

    如:解析以下命令:--framework=5 --model=./yolov5l.onnx --input_format=NCHW --input_shape="images:1,3,960,960" --output_type=FP32 --output=./yolov5l_onnx --log=error --precision_mode=allow_fp32_to_fp16...

    robotFramwork中验证下拉列表值是否正确与查询内容是否正确

    ### Robot Framework 中验证下拉列表值是否正确及查询内容是否正确的知识点 在自动化测试领域,Robot Framework 是一种广泛使用的开源自动化框架,它支持关键字驱动测试方法,并且具有强大的可扩展性,可以集成到...

    spring_MVC源码

    09. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 10. </listener> 11. 12. <servlet> 13. <servlet-name>spring</servlet-name> 14. <servlet-class>org.spring...

    CoCreate-input:原始javascript中的简单输入组件。 使用HTML5数据属性和_或JavaScript API轻松配置

    NPM $ npm install @cocreate/input目录如何贡献关于执照 公告内容该库的所有更新都记录在我们的CHANGELOG和发行版中。 您也可以订阅电子邮件以获取发行和重大更改。 路线图如果您对这个项目的未来方

    elk+springboot+kafka日志跟踪配置1

    <property name="CONSOLE_LOG_PATTERN" value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr([${springAppName:-},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}]...

    在一个form表单里同时上传多个文件和文本信息的解决方案

    2. 配置Spring Framework相关依赖。 ### 三、实现步骤 #### 1. 创建表单页面(index.jsp) ```jsp ;charset=GBK" %> 文件上传示例 请上传文件 文件1:<input type="file" name="file"/> 文件2:...

    java微信公众号MVC开发框架

    jwx是开源的java公众号开发MVC框架,基于spring配置文件和微信消息或事件注解,通过微信上下文处理一个或多个微信公众号服务请求。目的主要有两个,其一生封装微信请求xml消息为java实体对象,将返回对象转换为xml...

    spring-framework-reference4.1.4

    Using Log4J ............................................................................................. 14 II. What’s New in Spring Framework 4.x ......................................................

Global site tag (gtag.js) - Google Analytics