Android-13在Qemu/虚拟平台启动陷入OnBootPhase_XXX循环的调试咨询
Android 13启动循环问题排查方案
1. 控制台/Logcat调试启动循环的方法
- 抓取全缓冲区日志:执行
logcat -b all -d导出所有日志缓冲区(含main、system、crash、radio等),用logcat -b all | grep -E "OnBootPhase|PowerStatsService|keystore2"过滤核心关键字,定位循环阶段的关联日志 - 分析串口控制台输出:重点看init进程的服务启动顺序、失败提示,以及内核
dmesg日志(执行dmesg > dmesg.log导出),排查PowerStats依赖的硬件节点、驱动是否有异常 - 提取ANR痕迹文件:当keystore2看门狗触发时,系统会生成
/data/anr/traces.txt,通过串口或adb拉取该文件,查看阻塞线程的调用栈,定位卡住的服务 - 强制开启详细日志:在init.rc或设备树中添加
setprop log.tag.SystemServer VERBOSE,开启SystemServer的 verbose 级日志,明确BootPhase循环时的具体执行步骤
2. 代码中添加日志缩小问题范围的位置
- SystemServer BootPhase逻辑:在
frameworks/base/services/java/com/android/server/SystemServer.java的handleBootPhase()方法中,每个OnBootPhase_XXX分支前后添加阶段名称和时间戳日志,确认循环卡在哪个启动阶段 - PowerStatsService初始化:在
frameworks/base/services/core/java/com/android/server/powerstats/PowerStatsService.java的构造方法、onStart()或onBootPhase()中加日志,排查硬件HAL调用、数据读取是否阻塞 - Keystore2服务逻辑:在
frameworks/base/services/keystore2/java/com/android/server/keystore2/Keystore2Service.java的启动流程、看门狗监控代码中加日志,重点看服务初始化时与硬件加密模块的交互环节 - 系统服务启动入口:在
startBootstrapServices()、startCoreServices()、startOtherServices()方法中,每个服务启动前后添加日志,确认是否因某服务启动失败导致循环
3. 拉取指定分支是否缺失补丁?
大概率存在补丁缺失情况:
- 内核分支
common-android13-5.10-2022-12为通用分支,缺少设备特定驱动补丁(如PowerStats依赖的电源芯片驱动、硬件加密模块驱动),需将Android 12内核中适配设备的补丁移植到该分支 - Android框架层:
android-13.0.0_r18为稳定分支,但可能存在PowerStatsService、Keystore2的后续修复补丁,需查看该分支之后的AOSP提交,合并相关死锁、超时修复 - Vendor层:若设备有自定义vendor HAL,Android 13可能要求HAL版本升级,需将Android 12的vendor HAL适配到13的接口规范,否则会导致服务初始化失败
4. Android 12与13的设备配置差异
存在多处需更新的配置项,重点关注:
- SELinux策略:Android 13强化了SELinux规则,需更新
vendor/sepolicy中PowerStatsService、Keystore2对应的权限,避免权限拒绝导致服务启动失败 - PowerStats HAL版本:Android 13要求PowerStats HAL升级至v1.2,需检查
vendor/manifest.xml中的HAL版本配置,同步更新HAL实现代码 - Keystore2替代旧Keystore:Android 13默认启用Keystore2,需适配新的Keystore2 HAL,确保硬件加密模块支持其接口,同时更新设备目录下的init.rc服务启动配置
- VNDK版本:Android 13的VNDK版本升级至33,需确保vendor库使用的VNDK版本兼容,避免库加载失败
- init脚本语法:Android 13对init.rc的
seclabel、capabilities等语法要求更严格,需检查设备init脚本是否符合新规范 - BootPhase阶段调整:Android 13调整了部分BootPhase的触发时机,需确保设备自定义服务适配新的阶段顺序
内容的提问来源于stack exchange,提问作者user21034288
相关产品推荐
相关产品推荐

