Android启动过程笔记

1、借用一张别人的启动流程图先直观感受下:

《Android启动过程笔记》

注意:zygote和servicemanager都是在init进程解析init.rc时启动的。

zygote进程的入口是/system/bin/app_process,入口函数是App_main.cpp的main()函数。

service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server
   class main
   socket zygote stream 660 root system
   onrestart write /sys/android_power/request_state wake
   onrestart write /sys/power/state on
   onrestart restart media
   onrestart restart netd

2、启动流程大概如下,第一个图是zygote进程启动,第二个图是system_server进程启动:

《Android启动过程笔记》

《Android启动过程笔记》

贴一个system_server进程调用栈直观感受下:

12-31 09:54:59.941585 757 757 W System.err: at android.os.Handler.dispatchMessage(Handler.java:103)

12-31 09:54:59.941627 757 757 W System.err: at android.os.Looper.loop(Looper.java:193)

12-31 09:54:59.941666 757 757 W System.err: at com.android.server.ServerThread.initAndLoop(SystemServer.java:1651)

12-31 09:54:59.941708 757 757 W System.err: at com.android.server.SystemServer.main(SystemServer.java:1746)

12-31 09:54:59.941745 757 757 W System.err: at java.lang.reflect.Method.invokeNative(Native Method)

12-31 09:54:59.941821 757 757 W System.err: at java.lang.reflect.Method.invoke(Method.java:515)

12-31 09:54:59.941886 757 757 W System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829)

在system_server进程启动过程中日志tag一直是SystemServer,直到打印”activitymanager: System now ready”。

3、再贴一点开机启动日志感受下:

	          01-22 11:09:55.121 I/dalvikvm(  257): System server process 1024 has been created
		  01-22 11:09:55.121 I/Zygote  (  257): Accepting command socket connections
	          01-22 11:09:55.201 I/        ( 1024): System server: starting sensor init.
	Line 728: 01-22 11:09:55.201 I/SystemServer( 1024): Entered the Android system server!
	Line 730: 01-22 11:09:55.211 I/SystemServer( 1024): Waiting for installd to be ready.
	Line 732: 01-22 11:09:55.211 I/SystemServer( 1024): Power Manager
	Line 734: 01-22 11:09:55.221 I/SystemServer( 1024): Activity Manager
	Line 737: 01-22 11:09:55.401 I/SystemServer( 1024): Display Manager
	Line 738: 01-22 11:09:55.401 I/SystemServer( 1024): Telephony Registry
	Line 739: 01-22 11:09:55.401 I/SystemServer( 1024): MSimTelephony Registry
	Line 741: 01-22 11:09:55.411 I/SystemServer( 1024): Scheduling Policy
	Line 742: 01-22 11:09:55.411 I/SystemServer( 1024): Package Manager
	Line 1814: 01-22 11:10:00.251 I/SystemServer( 1024): Entropy Mixer
	Line 1816: 01-22 11:10:00.271 I/SystemServer( 1024): User Service
	Line 1817: 01-22 11:10:00.271 I/SystemServer( 1024): Account Manager
	Line 1818: 01-22 11:10:00.281 I/SystemServer( 1024): Content Manager
	Line 1819: 01-22 11:10:00.281 I/SystemServer( 1024): System Content Providers
	Line 1820: 01-22 11:10:00.331 I/SystemServer( 1024): Lights Service
	Line 1822: 01-22 11:10:00.341 I/SystemServer( 1024): Battery Service
	Line 1823: 01-22 11:10:00.341 I/SystemServer( 1024): Vibrator Service
	Line 1832: 01-22 11:10:00.351 I/SystemServer( 1024): Consumer IR Service
	Line 1833: 01-22 11:10:00.351 I/SystemServer( 1024): Alarm Manager
	Line 1834: 01-22 11:10:00.351 I/SystemServer( 1024): Init Watchdog
	Line 1835: 01-22 11:10:00.351 I/SystemServer( 1024): Input Manager
	Line 1837: 01-22 11:10:00.371 I/SystemServer( 1024): Window Manager
	Line 1853: 01-22 11:10:00.421 I/SystemServer( 1024): Bluetooth Manager Service
	Line 1854: 01-22 11:10:00.421 I/SystemServer( 1024): Input Method Service
	Line 1862: 01-22 11:10:00.461 I/SystemServer( 1024): Accessibility Manager
	Line 1865: 01-22 11:10:00.491 I/SystemServer( 1024): Mount Service
	Line 1892: 01-22 11:10:00.501 I/SystemServer( 1024): LockSettingsService
	Line 1893: 01-22 11:10:00.501 I/SystemServer( 1024): Device Policy
	Line 1894: 01-22 11:10:00.501 I/SystemServer( 1024): Status Bar
	Line 1895: 01-22 11:10:00.501 I/SystemServer( 1024): Clipboard Service
	Line 1899: 01-22 11:10:00.511 I/SystemServer( 1024): NetworkManagement Service
	Line 1904: 01-22 11:10:00.511 I/SystemServer( 1024): Text Service Manager Service
	Line 1906: 01-22 11:10:00.511 I/SystemServer( 1024): NetworkStats Service
	Line 1908: 01-22 11:10:00.511 I/SystemServer( 1024): NetworkPolicy Service
	Line 1928: 01-22 11:10:00.521 I/SystemServer( 1024): Wi-Fi P2pService
	Line 2148: 01-22 11:10:00.691 I/SystemServer( 1024): Wi-Fi Service
	Line 2152: 01-22 11:10:00.771 I/SystemServer( 1024): SambaServer Service
	Line 2155: 01-22 11:10:00.771 I/SystemServer( 1024): SambaClient Service
	Line 2159: 01-22 11:10:00.781 I/SystemServer( 1024): Connectivity Service
	Line 2277: 01-22 11:10:00.831 I/SystemServer( 1024): Network Service Discovery Service
	Line 2279: 01-22 11:10:00.831 I/SystemServer( 1024): DPM Service
	Line 2280: 01-22 11:10:00.831 I/SystemServer( 1024): DPM configuration set to 3
	Line 2283: 01-22 11:10:00.841 I/SystemServer( 1024): UpdateLock Service
	Line 2286: 01-22 11:10:00.901 I/SystemServer( 1024): Notification Manager
	Line 2310: 01-22 11:10:01.181 I/SystemServer( 1024): Device Storage Monitor
	Line 2312: 01-22 11:10:01.191 I/SystemServer( 1024): Location Manager
	Line 2313: 01-22 11:10:01.191 I/SystemServer( 1024): Country Detector
	Line 2314: 01-22 11:10:01.191 I/SystemServer( 1024): Search Service
	Line 2315: 01-22 11:10:01.191 I/SystemServer( 1024): DropBox Service
	Line 2316: 01-22 11:10:01.191 I/SystemServer( 1024): Wallpaper Service
	Line 2318: 01-22 11:10:01.211 I/SystemServer( 1024): Audio Service
	Line 2335: 01-22 11:10:01.311 I/SystemServer( 1024): Dock Observer
	Line 2337: 01-22 11:10:01.321 I/SystemServer( 1024): Wired Accessory Manager
	Line 2339: 01-22 11:10:01.321 I/SystemServer( 1024): USB Service
	Line 2343: 01-22 11:10:01.331 I/SystemServer( 1024): Serial Service
	Line 2344: 01-22 11:10:01.331 I/SystemServer( 1024): Twilight Service
	Line 2345: 01-22 11:10:01.331 I/SystemServer( 1024): UI Mode Manager Service
	Line 2347: 01-22 11:10:01.331 I/SystemServer( 1024): Backup Service
	Line 2393: 01-22 11:10:01.421 I/SystemServer( 1024): AppWidget Service
	Line 2394: 01-22 11:10:01.421 I/SystemServer( 1024): Recognition Service
	Line 2395: 01-22 11:10:01.421 I/SystemServer( 1024): DiskStats Service
	Line 2396: 01-22 11:10:01.421 I/SystemServer( 1024): SamplingProfiler Service
	Line 2397: 01-22 11:10:01.421 I/SystemServer( 1024): NetworkTimeUpdateService
	Line 2398: 01-22 11:10:01.421 I/SystemServer( 1024): CommonTimeManagementService
	Line 2399: 01-22 11:10:01.431 I/SystemServer( 1024): CertBlacklister
	Line 2400: 01-22 11:10:01.431 I/SystemServer( 1024): Dreams Service
	Line 2401: 01-22 11:10:01.431 I/SystemServer( 1024): IdleMaintenanceService
	Line 2402: 01-22 11:10:01.431 I/SystemServer( 1024): Print Service
	Line 2403: 01-22 11:10:01.431 I/SystemServer( 1024): Media Router Service
	Line 2404: 01-22 11:10:01.431 D/SystemServer( 1024): AccessControlService
	Line 2411: 01-22 11:10:01.491 D/SystemServer( 1024): DeviceStateService 
	Line 2412: 01-22 11:10:01.491 D/SystemServer( 1024): SettingsService 
	Line 2673: 01-22 11:10:01.921 F/SystemServer( 1024): BOOT FAILURE making Package Manager Service ready
	Line 2688: 01-22 11:10:01.921 W/SystemServer( 1024): ***********************************************
	     2436: 01-22 11:10:01.631 I/ActivityManager( 1024): Start proc com.android.systemui for service com.android.keyguard/.KeyguardService: pid=1108 uid=1000 gids={41000, 3003, 1028, 1015, 1023, 3001, 3002, 1007, 1021, 3004, 3005, 1000, 3009, 1010, 3006, 1035}
	           01-22 11:10:01.981 I/ActivityManager( 1024): System now ready
	Line 2800: 01-22 11:10:01.981 I/SystemServer( 1024): Making services ready
	Line 460:  01-22 11:10:03.581 I/ActivityManager( 1024): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000000 cmp=com.android.launcher3/.Launcher} from pid 0
	Line 661:  01-22 11:10:07.441 I/ActivityManager( 1024): Displayed com.android.launcher3/.Launcher: +3s847ms

注意:打印“ActivityManager( 1024): System now ready”之前已经在开始启动SystemUI了,之后再启动Launcher。

    原文作者:高山流水29
    原文地址: https://blog.csdn.net/guoqifa29/article/details/42981387
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞