0. 背景
因項目需要,作此分析,記錄於此,方便查閱。閒話少說,直接上一張android框架架構圖。
1. bootloader
鑑於本文旨在分析android啓動流程,在此不累述u-boot相關啓動流程,如需瞭解見u-boot分析。
2. kernel
鑑於本文旨在分析android啓動流程,在此不累述kernel相關啓動流程,如需瞭解見kernel分析。
3. init
代碼路徑:
android-4.4_r1/system/core/init/init.c
android-4.4_r1/device/samsung/smdk4412/init.rc
linux內核啓動之後,android系統起來的第一個進程就是init。init進程主要是用於文件夾建立,掛載,rc文件解析,屬性設置,啓動服務,執行動作,socket監聽等等。
4. zygote
代碼路徑:
android-4.4_r1/frameworks/base/cmds/app_process/app_main.cpp
android-4.4_r1/frameworks/base/core/jni/AndroidRuntime.cpp
android-4.4_r1/frameworks/base/core/java/com/android/internal/os/ZygoteInit.java
5. system server
代碼路徑:
android-4.4_r1/frameworks/base/services/java/com/android/server/SystemServer.java
android-4.4_r1/frameworks/base/services/jni/com_android_server_SystemServer.cpp
6. launcher
代碼路徑:
7. 解鎖
代碼路徑:
8. 開機自啓動的第三方應用程序
代碼路徑:
9. 總結
android的整個啓動流程如下圖所示: