monkey test 运行时出错问题解决

来源:互联网 发布:算法导论13.3章答案 编辑:程序博客网 时间:2024/05/17 02:00

在shell下运行monkey test的时候会出现如下错误:

Error: Key names array malformed (internalerror).

   在网上查资料,没有得到详细的答案。但是根据线索,发现错误在这里产生:android\development\cmds\monkey\src\com\android\commands\monkey\Monkey.java

 

    privateboolean checkInternalConfiguration() {
       // Check KEYCODE name array, make sure it's up to date.

       String lastKeyName = null;
       try {
           lastKeyName = MonkeySourceRandom.getLastKeyName();
       } catch (RuntimeException e) {
       }
       if (!"TAG_LAST_KEYCODE".equals(lastKeyName)) {
           System.err.println("** Error: Key names array malformed (internalerror).");
           returnfalse;
       }

       return true;
    }

   继续查找lastKeyName,发现在同级目录下的MonkeySourceRandom.java中的getLastKeyName():

 

    publicstatic String getLastKeyName() {
       return KEY_NAMES[KeyEvent.getMaxKeyCode() +1];
    }


   根据上面标红的代码,可以看出KEY_NAMES与KeyEvent之间存在着关联,KeyEvent.java的路径:\android\frameworks\base\core\java\android\view\KeyEvent.java

   将KEY_NAMES里面定义的字符及顺序定义得与KeyEvent里面的变量文字一样并且在KEY_NAMES最后加上一个额外的字符“TAG_LAST_KEYCODE”即可。

 

   总结:出现这个错误的原因是,在KeyEvent.java里面修改了KEYCODE的数量,而未在MonkeySourceRandom.java的KEY_NAMES变量中同步造成的。