开发者手机升级OH5.0.3启动点屏问题总结
前言:
开发者手机升级OH5.0.3基线,需要优先保障编译、启动和点屏适配,这里主要针对碰到的启动和点屏问题进行总结。
1、开机后无法启动
开机无法启动,表现为设备不断重启,导致hdc无法连接。
分析过程:
首先拉取串口日志
查看日志发现kernel panic,sysrq出现crash捕获,说明有关键进程启动失败,继续查看以上串口日志,发现ServiceReap error critical service crashed foundation 4,说明foundation进程启动失败。
通过查看foundation进程的cfg文件
critical属性字段分别表示:是否为关键进程,失败重启次数,重启间隔。
因为字段一配置为关键进程,所以会被kernel捕获导致出现sysrq triggered crash。将字段一改为0,重新烧录后foundation导致的重启现象消失,可通过hdc连接进入设备。
2、验证启动点屏
启动后发现点屏失败,拉取hilog日志进行分析
hilog日志
通过hilog日志分析,render_service 初始化失败,表现为依赖的composer初始化报错。
通过ps命令查看进程信息,composer_host和allocator_host进程未拉起成功,render_service进程存在,但是并未初始化成功,导致foundation进程也未成功拉起。
定位报错信息:[LoadVdiAdapter:104] pointer is null and return ret
上述空指针log是因为下方dlsym获取函数失败
空指针问题在于获取动态链接库的RegHotPlugCallback函数失败,继续定位libHandle_句柄关联的动态库
libHandle_加载的是libdisplay_composer_vdi_impl.z.so,搜索display_composer_vdi_impl名组件,发现该组件为device_soc_spreadtrum产品仓下定制的组件。
通过和社区OH5.0.3代码对比,发现RegHotPlugCallback等接口函数进行了全局化实现,提供给hdf侧通过dlopen、dlsym的c函数方式调用:
上述适配后解决了函数空指针问题,启动后还是无法亮屏,继续定位日志发现相关mali库加载失败:
基于之前底座升级,在musl下的ld-musl-namespace-aarch64.ini配置文件中acquiescence项增加了动态库查找路径,检查下当前文件:
发现OH5.0.3上新增了systemscence配置项,在该配置项的namespace.default.lib.paths属性中添加上so库查找路径,编译后重新烧录启动,能够成功点屏。
更多推荐
所有评论(0)