android啟動app流程
㈠ 如何查看androidapp啟動過程
啟動的過程如下:
Shell接收到命令,啟動一個程序,此時shell首先會fork一個新的進程
新fork的進程,通過execve系統調用,陷入到內核中,內核檢查和載入需要執行的二進制映像文件,檢驗其合法性及許可權。通常用戶態進程要啟動一個新的程序(如shell),fork後,execve要緊跟著執行,這樣會有更好的效率(由於使用COW技術,這樣可以避免頁表復制,而execve後,之前進程中的所有內容都是無用的,若execve緊跟fork後,可以避免COW引起的拷貝);
通常二進制文件都會要依賴一些系統動態庫,此時kernel會啟動載入器/system/bin/linker,執行linker的__linker_init()
Linker的linker_init(),會分析二進制的elf文件,載入依賴的動態庫文件,然後轉入二進制映像的入口函數__start中執行
__start會調用C庫的初始化函數__libc_init()
__libc_init()會調用映像的main函數,這個main函數也就是用戶app的入口函數
main() 函數執行完畢後,通過exit()退出進程執行
㈡ Android app 啟動時 Application、類載入器的初始化過程
這是一篇聽過朋友分享後,繼續深挖 ClassLoader 部分的收獲;
這是已篇還需要繼續整理一下 內容邏輯的文章……
當 app 啟動時 ActivityManagerService.startProcessLocked() 是 app 啟動時啟動進程的地方
這里 對 Zygote.forkSystemServer() 這個方法做個說明,它的 返回值為三種:
水平有限,有錯誤的地方,多多指出,謝謝~~~
參考鏈接:
㈢ Android應用啟動之從Launcher拉起APP時序圖
Android應用啟動之從Launcher拉起APP(一)
Android應用啟動之從Launcher拉起APP(二)
Android應用啟動之從Launcher拉起APP(三)
Android應用啟動之從Launcher拉起APP時序圖
㈣ 求講解一下安卓運行一個APP的詳細過程
在軟體商店或者瀏覽器下載,打開下載的安裝包,同意它要進行的限權,開始安裝,安裝後找到安裝的軟體,點擊開始使用