镜像烧录后直接启动会失败的问题分析报告
1 关键字 烧录,启动,失败 2 问题描述 产品:**** OpenHarmony版本号:OpenHarmony 3.2release 问题现象:此问题版本烧录后直接启动会卡在动画界面,启动失败,断电后再次启动可正常启动。 3 问题原因 3.1 正常机制 添加锁屏管理服务模块后,能正常完成初始化,运行完启动动画,启动设备。 3.2 异常机制 锁屏管理服务在启动过程中未能正常准备就绪,就开始运行启动
1 关键字
烧录,启动,失败
2 问题描述
产品:****
OpenHarmony版本号:OpenHarmony 3.2release
问题现象:此问题版本烧录后直接启动会卡在动画界面,启动失败,断电后再次启动可正常启动。
3 问题原因
3.1 正常机制
添加锁屏管理服务模块后,能正常完成初始化,运行完启动动画,启动设备。
3.2 异常机制
锁屏管理服务在启动过程中未能正常准备就绪,就开始运行启动画面,然后启动失败后就一直卡在启动画面。
4 解决方案
当前问题产生的原因首先是设备硬件配置比较低,导致启动过程明显变慢,而烧录后直接启动又比正常启动稍微慢一些,在添加锁屏管理服务后终于达到了一个临界值,使锁屏管理服务还未准备好就跳出了准备过程导致系统init失败,一直卡在启动画面。
解决方式是调整锁屏管理服务启动准备时间,给以充足的时间。
5 定位过程
-
重新烧录次问题版本,获取烧录后直接启动失败过程的日志
-
断电重启,获取成功启动过程的日志
-
对比日志,找到失败位置: a.动画进程只有开启没有结束动画时的打印信息; b.没有打印系统启动完成日志:“All boot events are fired, boot complete now ...”; c.没有打印锁屏服务准备完成事件:“bootevent.lockscreen.ready”。
4. 对比新旧版本代码中锁屏管理服务模块代码,只是打开了锁屏服务的使用,未有其他可能影响此错误的修改
5. 查找代码中控制锁屏管理服务启动过程的部分,找到控制ready状态的部分,修改时间,保证有充足的准备时间。
6. 编译镜像,多次重新烧录后直接启动(尝试复现问题),未再出现此问题。
6 知识分享
当多个服务都完成对应的启动事件后,由bootevents投票,在init进程中设置bootevent.boot.completed事件为true,表示系统启动完成
更多推荐
所有评论(0)