转:http://blog.sina.com.cn/s/blog_6ce2038b0100mc6u.html
1. Boot 系统初始化, 具体过程参见 (system/core/init/Init.c) 中的 main 函数,这时候,手机或者模拟器出现的画面是一个 console ,显示 “ANDROID”msg 。
2. 初始化成功后,就开始 mounting 系统,具体参见 (system/core/mountd/Mountd.c) 中的 main 函数。
3 .接下来运行 ndroidRuntime ,并开始启动 java 虚拟机 dalvikvm 。
4. Java 虚拟机启动成功后,开始系统初始化。系统初始的第一步是用 JNI 方式实现的,对应 java 代码为 (frameworks/base/services/java/com/android/server/SystemServer.java) init1 ( Native )函数,对应的 JNI C++ 代码为 (frameworks/base/ services /jni/com_android_server_SystemServer.cpp) ,而实现的 C++ 代码为
(frameworks/base/cmds/system_server/library/ System_init.cpp) 中的 system_init ()函数。
5. system_init 调用 SurfaceFlinger , SurfaceFlinger 的 readyToRun() 函数用 BootAnimation 来实现开机动画,这时候手机或者模拟器显示是一副背景图加一个动态的小机器人。
6. 系统初始化的第二步,将启动 ServerThread 进程,参见 SystemServer.init2() 。 ServerThread 将启动各种系统服务,如 Power Manager 、 Activity Manager 等等,具体参见 ServerThread 的 run 函数, ServerThread 同在 SystemServer.java 中。
7. 这之后的事,应该就是进入系统了。(这部分没有调查过)。