1 关键字

烧录,启动,失败

2 问题描述

产品:****
OpenHarmony版本号:OpenHarmony 3.2release
问题现象:此问题版本烧录后直接启动会卡在动画界面,启动失败,断电后再次启动可正常启动。

3 问题原因

3.1 正常机制

添加锁屏管理服务模块后,能正常完成初始化,运行完启动动画,启动设备。

3.2 异常机制

锁屏管理服务在启动过程中未能正常准备就绪,就开始运行启动画面,然后启动失败后就一直卡在启动画面。

 4 解决方案

当前问题产生的原因首先是设备硬件配置比较低,导致启动过程明显变慢,而烧录后直接启动又比正常启动稍微慢一些,在添加锁屏管理服务后终于达到了一个临界值,使锁屏管理服务还未准备好就跳出了准备过程导致系统init失败,一直卡在启动画面。
解决方式是调整锁屏管理服务启动准备时间,给以充足的时间。

 5 定位过程

  1. 重新烧录次问题版本,获取烧录后直接启动失败过程的日志

  2. 断电重启,获取成功启动过程的日志

  3. 对比日志,找到失败位置: 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,表示系统启动完成

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐