1.异常信息:
2.代码逻辑
keyCodeToString:
frameworks/native/libs/input/InputEventLabels.cpp:
以KeyEvent的code作为索引遍历 KEY_NAMES 返回 literal参数
KEY_NAMES定义:
KEY_NAMES 使用 KEYCODE_SEQUENCE 进行初始化
3.原因定位:
3-1. cts 测试cas 异常原因:
第一个0好元素 29行
KeyEvent.java中 KEYCODE_PROFILE_SWITCH的定义
vec[value].literal 即:KEY_NAMES[KEYCODE_PROFILE_SWITCH].literal 以及KEY_NAME的赋值:
const std::vector<InputEventLabel> InputEventLookup::KEY_NAMES = {KEYCODES_SEQUENCE};
即 KEYCODES_SEQUENCE 偏移 288 取其 literal成员-> 29行偏移 288行=> 317行
KEYCODE_PROFILE_SWITCH 与SYSTEM_NAVIGATION_RIGHT 不符合所以报错
3-2. 对不齐的原因:新加了按键
172行新添加了5个按键导致了 后面的索引偏移了所以对不齐
InputEventLabels 文件中新增了如下修改
KeyEvent.java 修改如下
F13的数值是305 即使KEYCODE_SEQUENCE 的305号元素,第0号元素在29行
4. 修改方案:
DEFINE_KEYCODE(F13) 往后的都新加按键应该在334行的位置