Android的開機流程

來源:互聯網
上載者:User
1. 系統引導bootloader

1) 源碼:bootable/bootloader/*

2) 說明:加電後,CPU將先執行bootloader程式,此處有三種選擇

  1. 開機按Camera+Power啟動到fastboot,即命令或SD卡燒寫入模式,不載入核心及檔案系統,此處可以進行原廠模式的燒寫
  2. 開機按Home+Power啟動到recovery模式,載入recovery.img,recovery.img包含核心,基本的檔案系統,用於工程模式的燒寫
  3. 開機按Power,正常啟動系統,載入boot.img,boot.img包含核心,基本檔案系統,用於正常啟動手機(以下只分析正常啟動的情況)
 2.核心kernel
  1. 源碼:kernel/*
  2. 說明:kernel由bootloader載入
 3.檔案系統及應用init
  1. 源碼:system/core/init/*
  2. 設定檔:system/core/rootdir/init.rc,
  3. 說明:init是一個由核心啟動的使用者級進程,它按照init.rc中的設定執行:啟動服務(這裡的服務指linux底層服務,如adbd提供adb支援,vold提供SD卡掛載等),執行命令和按其中的配置語句執行相應功能
 4. 重要的背景程式zygote

1)源碼:frameworks/base/cmds/app_main.cpp等

2) 說明:zygote是一個在init.rc中被指定啟動的服務,該服務對應的命令是/system/bin/app_process source (service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server socket zygote stream 666)

  1. 建立Java Runtime,建立虛擬機器
  2. 建立Socket接收ActivityManangerService的請求,用於Fork應用程式
  3.  啟動System Server
 5. 系統服務system server
  • 源碼:frameworks/base/services/java/com/android/server/SystemServer.java
  • 說明:被zygote啟動,通過System Manager管理android的服務(這裡的服務指frameworks/base/services下的服務,如衛星定位服務,剪下板服務等)
 6.案頭launcher
  • 源碼:ActivityManagerService.java為入口,packages/apps/launcher*實現
  • 說明:系統啟動成功後SystemServer使用xxx.systemReady()通知各個服務,系統已經就緒,傳統型程式Home就是在ActivityManagerService.systemReady()通知的過程中建立的,最終調用startHomeActivityLocked()啟launcher
 7. 解鎖
  • 源碼:frameworks/policies/base/phone/com/android/internal/policy/impl/*lock*
  • 說明:系統啟動成功後SystemServer調用wm.systemReady()通知WindowManagerService,進而調用PhoneWindowManager,最終通過LockPatternKeyguardView顯示解鎖介面,跟蹤代碼可以看到解鎖介面並不是一個Activity,這是只是向特定層上繪圖,其代碼了存放在特殊的位置
 8.開機自啟動的第三方應用程式
  •  源碼:frameworks/base/services/java/com/android/server/am/ActivityManagerService.java
  •  說明:系統啟動成功後SystemServer調用ActivityManagerNative.getDefault().systemReady()通知ActivityManager啟動成功,ActivityManager會通過置變數mBooting,通知它的另一線程,該線程會發送廣播android.intent.action.BOOT_COMPLETED以告知登入的第三方程式在開機時自動啟動。
 9.總結

綜上所述,系統層次關於啟動最核心的部分是zygote(即app_process)和system server,zygote它負責最基本的虛擬機器的建立,以支援各個應用程式的啟動,而system server用於管理android後台服務,啟動步驟及順序。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.