关于启动过程的流程,详见之前的一篇技术文档。
这节我们来进行分析,跟踪下如何定位无法启动到桌面的问题。
主要步骤为:
先看启动时的logo,第二次logo会有个亮屏,看到这个,说明linux底层没啥问题,出现问题会在system_server里面。
如果没有看到,就去定位是否驱动出现故障,具体的如果是mtk,可以去看/proc/bootprof文件,查看在哪个阶段出现问题。
如果在开机动画这里,动画结束了,没有进入桌面。
这里在SystemServer.java 里面,system_server进程中在
image的catch加上断点,此处可以追踪到启动服务中的各类异常。具体调试方案,详见
服务启动ok,没有异常的时候,在此文件的 startSystemUi(context, windowManagerF);打上断点。
此处确定下是否进入了systemui进程。同时在
imageKeyguardServiceDelegate.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 )
网友评论