Android穩定性(二)bootup fail

2021-10-06 23:17:59 字數 1578 閱讀 1656

android系統啟動簡單流程:

1、bootloader啟動

開機供電,硬體電路會產生乙個確定的復位時序用於硬體啟動順序,直至最後cpu啟動;cpu開始執行第一條指令,該指令所在的記憶體位址是固定的,這個固定記憶體位址儲存的程式就是bootloader,常用的就是u-boot,其作用就是拉起作業系統,裝載使用者程式;

2、linux系統啟動

核心解壓,linux初始化各種軟硬體環境,載入驅動程式,掛載根檔案系統,執行init服務

3、init程序

init 程序是 linux 系統中使用者空間的第乙個程序,程序號為1;init程序做兩件事:掛載目錄,解析init.rc

4、zygote 程序

init 程序在解析init.rc指令碼時建立zygote程序,zygote是android系統所有應用的父程序,都是由zygote程序fork出來的

5、systemserver程序

zygote程序初始化完成後去啟動systemserver程序,systemserver程序去啟動framework的各種核心服務

6、「action_boot_completed」 開機廣播發出,系統啟動完成

bootup fail問題分析:(以mtk平台為例)

抓取uart串列埠log,使用自帶mtklogger,同時抓取正常log對比;

根據關鍵字檢索,檢視是掛在開機啟動那個階段,哪行函式執行出錯:

「lk finished --> jump to linux kernel」----表示lk完成,進入kernel

「kernel_init_done」--------------------------表示kernel初始化完成

「init: init first stage started」----------------表示init程序正常起來執行

「fs_mgr」 和"e2fsck"-------------------------表示在檢查和mount 檔案系統

「zygote」----------------------------------------表示zygote程序啟動

「system_server」-----------------------------表示system_server程序啟動

「boot_animation:end」------------------表示開機動畫正常結束

「bootprof」--------------------------------開機過程中,每乙個重要階段都會列印的標誌

「1:init」-------------------------------------------init階段重要log列印

開機動畫對應的啟動階段:

1、linux核心啟動的靜態畫面,具體在kernel/drivers/video/fbmem.c

2、init程序啟動過程**現的靜態畫面,具體在system/core/init/init.c

3、系統服務啟動過程**現的動態畫面,實現是在init.rc裡新增了乙個bootanimation的服務,啟動的時機是在su***ceflinger啟動後,改變乙個系統變數,執行開機動畫,等launcher起來後,ams通知su***ceflinger改變變數值,開機動畫退出

android 穩定性monkey測試

本篇針對應用記憶體洩漏測試,簡單介紹一下記憶體洩漏的危害,記憶體洩漏指程式中己動態分配的堆記憶體由於某種原因程式未釋放或無法釋放,造成系統記憶體的浪費,導致程式執行速度減慢甚至系統崩潰等嚴重後果。簡單來說就是如果存在記憶體洩漏的話,應用會越用越卡,最後導致應用崩潰。前提準備條件 1 手機root許可...

mysql穩定性 MySQL的穩定性

isam表處理器 穩定 它管理所有在mysql 3.22和早期版本中的資料的儲存和檢索。在所有mysql版本中,中已經沒有乙個單獨 報告的 錯誤。得到乙個損壞的資料庫表的唯一已知方法是在乙個更新中途殺死伺服器,即使這樣也不大可能破壞任何資料而不能挽救,因為所有資料在每個查詢之間被倒入 flush 到...

Android 系統穩定性 ANR(三)

android anr穩定性 android應用程式的所有標準元件全部執行在乙個單一的主線程中,在主線程中所做的任何耗時的操作都有可能造成anr,因為這些耗時的操作會使得主線程沒有機會處理使用者輸入事件或者廣播事件。因此在主線程中執行的任何函式所做的工作都應該盡可能的少,特別是對於activity的...