monkey测试需要设置ro.monkey属性为true。使用MTK的QAAT(Quickly Android Analysis Tool)工具可以快速过滤log,初步定位。
常见异常:
1.NE(Native Exception)
若发生了NE,请判断是挂死在第三方lib 中,还是在平台的lib中?
如果发生在第三方lib 中,请先找第三方来解决,因为MTK 没有其symbol,没办法解决。
如果是死在MTK 平台的lib或dex中,请提交eService给MTK分析。
对于NE 的问题提交eServcie 时请一并提交NE的backtrace 对应lib 的symbols文件。
注意:
必须是 symbols 下面的, 才会有 debug 信息, 手机里面的不可用. 如没有保留此文件, 请重新编译一个版本复现, 并保留对应的 symbols
发生NE的时候在mtklog目录下会生成aee_exp目录或者在/data/aee_exp目录
2.JE(Java Exception)
NullPointerException
异常类型:空指针异常
发生原因:对为空的对象进行操作
解决方法:对对象赋值、加判断 不为空的判断
ClassCastException异常类型:转换异常
发生原因:强制转换发生的,被转换的类型与转化后的类型不一致
解决办法:修改转换后的类型
FileNotFoundException
异常类型:文件没有找到
发生原因:文件的路径或名称不对
解决办法:修改文件名称或者路径
ClassNotFoundException
异常类型:类没有找到异常
发生原因:类的路径或名称不对、类不存在
解决办法:修改类名称或者路径、检查编译环境
ArrayIndexOutOfBoundsException
异常类型:数组下标越界
发生原因:数组下标越界,引用数组的下标超过了数组长度-1
解决办法:修改下标的值
3.KE(Kernel Exception)
如果遇到内核崩溃(KE),请将log(里面一定要从手机捞出/data/aee_exp/*,和mtklog目录)和同一次编译生成的vmlinux(用于还原当时的现场,查看函数,解析地址等),两者缺一不可。一般像KE这类问题需要驱动协助分析了。