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

如何抓取 framework input 事件相关 log的更多相关文章

  1. python3 - 通过BeautifulSoup 4抓取百度百科人物相关链接

    导入需要的模块 需要安装BeautifulSoup from urllib.request import urlopen, HTTPError, URLError from bs4 import Be ...

  2. Dynamics CRM Form表单中通过javascript抓取触发change事件字段的属性名

    通过下面这段代码可以抓取到change的事件源,从而判断出是哪个属性字段触发的事件, function change(pContext) {var fieldName=pContext.getEven ...

  3. fiddler抓取手机APP包相关的设置

    一.设置手机的代理服务器 1.前提:手机与电脑用的是同一个网络 2.fiddler设置允许远程连接,并设置好端口 3.查询电脑所在网络的ip地址(windows下,命令行窗口使用:ipconfig进行 ...

  4. 如何在User版本开启串口(Uart),抓取上层Log,开启输入控制台

    [原][FAQ03891] 如何在User版本开启串口(Uart),抓取上层Log,开启输入控制台 2014-11-26阅读1369 评论0 FAQ Content [Description]如何在U ...

  5. 「拉勾网」薪资调查的小爬虫,并将抓取结果保存到excel中

    学习Python也有一段时间了,各种理论知识大体上也算略知一二了,今天就进入实战演练:通过Python来编写一个拉勾网薪资调查的小爬虫. 第一步:分析网站的请求过程 我们在查看拉勾网上的招聘信息的时候 ...

  6. python抓取历年特码开奖记录

    背景: 小时候,有种游戏,两个主人公:白XX和曾XX,每个家庭把他俩像活菩萨一样供着,供他们吃,供他们穿 做生意的老板为了这两位活菩萨,关门大吉 农民为了这两位活菩萨卖牛卖田变卖家产 做官的为了这两位 ...

  7. 重构前的程序:通过rsync命令抓取日志文件

    基本概况: 我有一台服务器每天每个小时都会生成一个日志文件,这些日志文件会被保留2天,超过2天会被一个程序压缩放到备份目录,日志文件的文件名是有命名要求的,例如:project_log.2013010 ...

  8. Web Scraper 翻页——控制链接批量抓取数据

    ![](https://image-1255652541.cos.ap-shanghai.myqcloud.com/images/20190708214014.png) 这是简易数据分析系列的第 5 ...

  9. 简易数据分析 07 | Web Scraper 抓取多条内容

    这是简易数据分析系列的第 7 篇文章. 在第 4 篇文章里,我讲解了如何抓取单个网页里的单类信息: 在第 5 篇文章里,我讲解了如何抓取多个网页里的单类信息: 今天我们要讲的是,如何抓取多个网页里的多 ...

随机推荐

  1. P1387 最大正方形 |动态规划

    题目描述 在一个n*m的只包含0和1的矩阵里找出一个不包含0的最大正方形,输出边长. 输入格式 输入文件第一行为两个整数n,m(1<=n,m<=100),接下来n行,每行m个数字,用空格隔 ...

  2. 用workspace管理工程,并解决多静态库依赖

    from:http://www.cnblogs.com/perryxiong/p/3759818.html   最近我在项目中遇到一些工程之间的管理问题. 模型: 其中 库A 是一个公共的基础静态库, ...

  3. ARTS-S golang单元测试

    golang单元测试 在$GOPATH的src目录下建目录demo_unittest 在目录demo_unittest下建文件calc.go,内容如下: package demo_unittest f ...

  4. Orleans的深入

    1.序列化  序列化配置有几个坑这里我写出来 2.负载均衡 3.定时器与提醒 4.服务启动执行代码 5.监控 序列化 新建实体类 引用的包 Microsoft.Orleans.Core V2.12 M ...

  5. Django 06

    目录 注意 聚合查询 分组查询 F与Q查询 orm字段和参数 自定义字段类型 事务 ACID 三大范式 开启事务 注意 只要和数据库相关的功能, 基本在 django.db.models 里面 聚合查 ...

  6. kubernetes-集群构建

    本实验参考:https://github.com/gjmzj/kubeasz kubernetes官方github地址 https://github.com/kubernetes/kubernetes ...

  7. angular实现draggable拖拽

    前言:最近项目要实现一个拖拽功能,我在网上开始了各类搜寻,虽然后面因为数据原因舍弃了拖拽的这一需求,但是为了不辜负最近的研究,还是来记录一下. 场景需求:面试预约选时间节点,候选人之间是可以相互交换的 ...

  8. 三、Vue 的一些语法样例

    前言 其实vue 的语法在官网上都有详细的讲解和例子,我这里就不多做什么说明,只是把自己学习这些语法是练习的例子贴出来.另外官网上的例子是一个个的html文件.我这里的是一个的vue 文件,通过不同的 ...

  9. Python基础-day01-3

    PyCharm 的初始设置(知道) 目标 恢复 PyCharm 的初始设置 第一次启动 PyCharm 新建一个 Python 项目 设置 PyCharm 的字体显示 PyCharm 的升级以及其他 ...

  10. c++-内联函数和函数重载和默认参数和函数指针

    内联函数 C++ 内联函数是通常与类一起使用.如果一个函数是内联的,那么在编译时,编译器会把该函数的代码副本放置在每个调用该函数的地方. 对内联函数进行任何修改,都需要重新编译函数的所有客户端,因为编 ...