1、重启log过滤
过滤tag为bootstat的log,中间会有比如:boot reason: shutdown,userrequested的信息,标时上一次设备重启的原因。
详细介绍见https://source.android.google.cn/devices/bootloader/boot-reason
adb shell logcat |findstr "bootstat"
07-05 17:07:08.625 980 980 I bootstat: Service started: /system/bin/bootstat --set_system_boot_reason
07-05 17:07:08.655 980 980 I bootstat: Canonical boot reason: shutdown,userrequested
07-05 17:07:08.655 980 980 I bootstat: Canonical boot reason: shutdown,userrequested
2、mtklog
打开mtklog,复现问题重启后导出。log文件中会有boot__normal文件夹。
3、mtk gat工具
导出/data/vendor/aee_exp和/data/aee_exp下面的log文件。----- dbg文件
使用gat工具解析dbg文件。
gat工具可以在mtk官网下载:https://online.mediatek.com/
4、废话
mtk官网有一些不错的工具和文章。内存和重启问题的分析,多偏向于底层。
5、关机流程
关机流程可以参考以下其它人的文章https://blog.csdn.net/qq_29413633/article/details/120848128
monkey测试关机/重启问题分析(一)
monkey测试关机/重启问题分析(二)
frameworks/base/services/core/java/com/android/server/power/ShutdownThread.java的run方法会打印一些log和保存文件。
可以pull出来这2个文件夹看看
adb pull /data/system/shutdown-checkpoints
adb pull /data/system/shutdown-metrics
// File to use for saving shutdown metrics
private static final String METRICS_FILE_BASENAME = "/data/system/shutdown-metrics";
// File to use for saving shutdown check points
private static final String CHECK_POINTS_FILE_BASENAME =
"/data/system/shutdown-checkpoints/checkpoints";
adb shell getprop 打印出系统属性查看boot.reason
[persist.sys.boot.reason.history]: [shutdown,userrequested,1685867693
reboot,factory_reset,1685777074
reboot,23]