这节我们来进行分析,跟踪下如何定位无法启动到桌面的问题。
主要步骤为:
先看启动时的logo,第二次logo会有个亮屏,看到这个,说明linux底层没啥问题,出现问题会在system_server里面。
如果没有看到,就去定位是否驱动出现故障,具体的如果是mtk,可以去看/proc/bootprof文件,查看在哪个阶段出现问题。
只需一个命令,快速定位android的启动耗时
如果在开机动画这里,动画结束了,没有进入桌面。
这里在SystemServer.java 里面,system_server进程中在
的catch加上断点,此处可以追踪到启动服务中的各类异常。
服务启动ok,没有异常的时候,在此文件的 startSystemUi(context, windowManagerF);打上断点。
此处确定下是否进入了systemui进程。同时在
KeyguardServiceDelegate.java的bindService方法,来看下是否成功绑定了锁屏服务。
这里在调试时候,用了am命令,进行调试,验证。
am startservice "com.android.systemui/.ImageWallpaper"
am startservice com.android.systemui/com.android.systemui.keyguard.KeyguardService
先启动壁纸,将systemui进程拉起来。
在启动锁屏服务,看是否ok。
在此过程,要调试启动服务是否正常,在 ActivityThread.java (systemui进程)
里面handleCreateService 进行调试,在 service.onCreate();这里的catch进行下断,看下是否有异常。
在此过程,可以使用hierarchyviewer.bat查看视图,看下是否有界面出现,是否ok。
以上,就是明哥今天的分享。