android手机无法开机到桌面问题,定位方法

2018-06-30  本文已影响100人  代码GG陆晓明
image

关于启动过程的流程,详见之前的一篇技术文档。

Android 启动过程框架

这节我们来进行分析,跟踪下如何定位无法启动到桌面的问题。

主要步骤为:

先看启动时的logo,第二次logo会有个亮屏,看到这个,说明linux底层没啥问题,出现问题会在system_server里面。

如果没有看到,就去定位是否驱动出现故障,具体的如果是mtk,可以去看/proc/bootprof文件,查看在哪个阶段出现问题。

只需一个命令,快速定位android的启动耗时

如果在开机动画这里,动画结束了,没有进入桌面。

这里在SystemServer.java 里面,system_server进程中在

image

的catch加上断点,此处可以追踪到启动服务中的各类异常。具体调试方案,详见

app和SystemProcess调试方案

深入Android源码系列(一)

SDL系列讲解(五) 调试c代码

服务启动ok,没有异常的时候,在此文件的 startSystemUi(context, windowManagerF);打上断点。

此处确定下是否进入了systemui进程。同时在

image

KeyguardServiceDelegate.java的bindService方法,来看下是否成功绑定了锁屏服务。

image

这里在调试时候,用了am命令,进行调试,验证。

am startservice "com.android.systemui/.ImageWallpaper"

am startservice com.android.systemui/com.android.systemui.keyguard.KeyguardService

先启动壁纸,将systemui进程拉起来。

在启动锁屏服务,看是否ok。

在此过程,要调试启动服务是否正常,在 ActivityThread.java (systemui进程)

image

里面handleCreateService 进行调试,在 service.onCreate();这里的catch进行下断,看下是否有异常。

image

在此过程,可以使用hierarchyviewer.bat查看视图,看下是否有界面出现,是否ok。

以上,就是今天的分享,喜欢就转发,赞赏明哥,支持下。


明哥家的冬枣成熟了,可以保证的是:脆甜,新鲜。品尝过的老铁们觉得好,可以推荐给朋友哈。

如果你跟我比较熟的话,可以先行邮寄,尝过后再支付。一切,都建立在相互不欺。实物图:(订购合作加微信 code_gg_boy )

上一篇下一篇

猜你喜欢

热点阅读