1、问题背景
我们公司使用的是全志T7芯片,Android7.1的系统,做的是车载导航,在21年10月份开始,产品陆陆续续报了各种稀奇古怪的问题,大部分问题主要集中在黑屏、卡顿、死机、重启等。
2、问题与解决方案介绍
2.1 设备卡顿问题
客户反馈,设备在使用过程中,时间一长出现各种场景卡顿(反馈的次数太多了,有些是开发人员犯的低级错误)。卡顿问题后面会调几个特殊案例说说,就不一一分析问题根因了,下面主要讲解解决过程。
2.1.1 版本模式导致的性能问题
由于公司小,有些标准规范心里清楚,但是实际做起来就不是那样了,没错,我们公司的产品早期发布的版本都是eng模式的版本(工程师模式),直接用eng版本出货的,而不是user模式。
user 版本为提高第一次开机速度,使用了DVM 的预优化,将dex 文件分解成可直接load 运行的odex 文件,eng版本不会开启这项优化,更少的LOG 打印,uart 的关闭,原则上user 版本的性能要优于eng 版本。
2.1.2 跨进程通信Binder调用太频繁
我们做的是车载导航,车上的各种传感器的信号通过can总线传给我们设备的单片机,然后再通过binder传给应用层。由于车上传感器多,且数据发送频繁,关胎压来说,如果是4轴的大货车就有14个轮胎,每一秒都要发送所有轮胎的数据给应用,可见数据发送的非常频繁,再加上我们框架层的消息管理设计有问题,一个消息做了多次binder调用,同时没有过滤重复的消息,因此日志里总是报各种binder调用异常