编译源码烧写到nexus后,在开机后有时会出现各类各样的问题,本篇就来介绍下android系统的启动流程。引用网上的图片来展开分析:java
第一阶段:Android设备上电后,首先会从处理器片上ROM的启动引导代码开始执行,片上ROM会寻找Bootloader代码,并加载到内存。(这一步由“芯片厂商”负责设计和实现)linux
第二阶段:Bootloader开始执行,首先负责完成硬件的初始化,而后找到Linux内核代码,并加载到内存。(这一步由“设备厂商”负责设计和实现)android
第三阶段:Linux内核开始启动,初始化各类软硬件环境,加载驱动程序,挂载根文件系统,并执行init程序,由此开启Android的世界。(这一步则是Android内核开发过程当中须要涉及的地方)动画
从上面能够很容易看出来android系统启动的流程:bootloader、linux kernel、init(此处启动Zygote进入java世界)。这是从android设计者的角度出发,接下来咱们从用户角度看看android启动流程(即开机流程)。android启动后会呈现三个不一样的图片和动画,咱们能够从这里深刻。spa
Android系统在启动的过程当中,最多能够出现三个画面,每个画面都用来描述一个不一样的启动阶段。第一个开机画面是在内核启动的过程当中出现的,它是一个静态的画面。第二个开机画面是在init进程启动的过程当中出现的,它也是一个静态的画面。第三个开机画面是在系统服务启动的过程当中出现的,它是一个动态的画面。——by 老罗.net
既然理性和感性认识都有了,接下来就结合android4.4源码来详细分析启动过程吧:设计
卧槽 bootloader没找到,稍等啊blog
参考资料:进程