Android系统总体加载流程如下所示:
1、Android系统通过init进程启动Zygote,其中init进程的日志是在内核中打印。
M00005F 07-01 16:11:02.023 422 422 I Zygote : System server process 764 has been created
M000060 07-01 16:11:02.025 422 422 I Zygote : Accepting command socket connections
M000061 07-01 16:11:02.059 764 764 I zygote : The ClassLoaderContext is a special shared library.
M000062 07-01 16:11:02.098 764 764 I zygote : The ClassLoaderContext is a special shared library.
M000063 07-01 16:11:02.100 764 764 I zygote : The ClassLoaderContext is a special shared library.
M000064 07-01 16:11:02.107 764 764 I zygote : The ClassLoaderContext is a special shared library.
2、在Zygote启动系统服务SystemServer并且在该服务中启动其他的系统服务,系统在初始化完了开门狗之后才启动WindowManagerService、ActivityManagerService服务
SystemServer: InitBeforeStartServices
S000066 07-01 16:11:02.131 764 764 I SystemServer: Entered the Android system server!
ServiceManager: Waiting for service package_native...
S00006B 07-01 16:11:02.393 764 764 I SystemServer: StartServices
S00006C 07-01 16:11:02.393 764 764 I SystemServer: Reading configuration...
S00006D 07-01 16:11:02.393 764 764 I SystemServer: ReadingSystemConfig
S00006E 07-01 16:11:02.393 764 764 I SystemServer: StartInstaller
S00006F 07-01 16:11:02.396 764 764 I SystemServiceManager: Starting com.android.server.pm.InstallerEx
S000070 07-01 16:11:02.401 764 764 I SystemServer: DeviceIdentifiersPolicyService
S000071 07-01 16:11:02.401 764 764 I SystemServiceManager: Starting com.android.server.os.DeviceIdentifiersPolicyService
S000072 07-01 16:11:02.403 764 764 I SystemServer: StartActivityManager
S000073 07-01 16:11:02.403 764 764 I SystemServiceManager: Starting com.android.server.am.ActivityManagerService$Lifecycle
S000074 07-01 16:11:02.451 764 764 I ActivityManager: Memory class: 128
S0000E5 07-01 16:11:02.714 764 764 I SystemServer: StartPowerManager
S00013E 07-01 16:11:02.728 764 764 I SystemServer: InitPowerManagement
S00013F 07-01 16:11:02.731 764 764 I SystemServer: StartRecoverySystemService
S000140 07-01 16:11:02.731 764 764 I SystemServiceManager: Starting com.android.server.RecoverySystemService
M000141 07-01 16:11:02.734 439 529 I ServiceManager: Waiting for service package_native...
E000142 07-01 16:11:02.738 764 764 I rescue_note: [0,1,11188]
S000143 07-01 16:11:02.738 764 764 W RescueParty: Noticed 1 events for UID 0 in last 11 sec
S000144 07-01 16:11:02.738 764 764 I SystemServer: StartLightsService
S000145 07-01 16:11:02.739 764 764 I SystemServiceManager: Starting com.android.server.lights.LightsService
S000146 07-01 16:11:02.739 764 764 I SystemServer: StartDisplayManager
S000147 07-01 16:11:02.739 764 764 I SystemServiceManager: Starting com.android.server.display.DisplayManagerService
S000148 07-01 16:11:02.743 764 764 I SystemServer: WaitForDisplay
S000149 07-01 16:11:02.744 764 764 I SystemServiceManager: Starting phase 100
S000FF5 07-01 16:11:05.060 764 764 I SystemServer: InitWatchdog
S000FF6 07-01 16:11:05.065 764 764 I SystemServer: StartInputManagerService
S000FF7 07-01 16:11:05.068 764 764 I InputManager: Initializing input manager, mUseDevInputEventForAudioJack=true
M000FF8 07-01 16:11:05.069 764 764 D InputReader: InpuReader constructor debug log is disabled
S000FF9 07-01 16:11:05.069 764 764 I SystemServer: StartWindowManagerService
3、在SystemServer系统服务中启动PackageManagerService服务并且开始扫描如下目录下面的文件:/system/framework、/vendor/overlay/、/system/priv-app、/system/app、/vendor/app、/data/app
///vendor/overlay/
S00017C 07-01 16:11:03.098 764 796 D PackageManager: SPRD : takeAndScanPackageLI: /vendor/overlay/SysuiDarkTheme
S00017D 07-01 16:11:03.099 764 797 D PackageManager: SPRD : takeAndScanPackageLI: /vendor/overlay/framework-res__auto_generated_rro.apk
///system/framework
M00017F 07-01 16:11:03.105 764 764 D PackageManagerServiceExUtils: parallelTakeAndScanPackageLI: /system/framework , fileCount = 3
S000180 07-01 16:11:03.116 764 803 D PackageManager: SPRD : takeAndScanPackageLI: /system/framework/arm
S000181 07-01 16:11:03.116 764 803 W PackageManager: Failed to parse /system/framework/arm: Missing base APK in /system/framework/arm
S000182 07-01 16:11:03.117 466 476 I YLOG : logmon::0.000 0-0-0-0 t:117 c:0 ts:0k 0.000[256,373,117,16][0]
S000183 07-01 16:11:03.119 764 804 D PackageManager: SPRD : takeAndScanPackageLI: /system/framework/oat
S000184 07-01 16:11:03.119 764 804 W PackageManager: Failed to parse /system/framework/oat: Missing base APK in /system/framework/oat
///system/priv-app
M00018D 07-01 16:11:03.186 764 764 D PackageManagerServiceExUtils: parallelTakeAndScanPackageLI: /system/priv-app , fileCount = 47
S00018E 07-01 16:11:03.191 764 812 D PackageManager: SPRD : takeAndScanPackageLI: /system/priv-app/AntitheftPlugin
S00018F 07-01 16:11:03.192 764 811 D PackageManager: SPRD : takeAndScanPackageLI: /system/priv-app/BackupRestoreConfirmation
S000190 07-01 16:11:03.200 764 811 D PackageManager: SPRD : takeAndScanPackageLI: /system/priv-app/CallLogBackup
S000191 07-01 16:11:03.200 764 813 D PackageManager: SPRD : takeAndScanPackageLI: /system/priv-app/CarrierConfig
S000192 07-01 16:11:03.201 764 811 D PackageManager: SPRD : takeAndScanPackageLI: /system/priv-app/DefaultContainerService
S000193 07-01 16:11:03.201 764 812 D PackageManager: SPRD : takeAndScanPackageLI: /system/priv-app/CbCustomSetting
S000194 07-01 16:11:03.202 764 812 D PackageManager: SPRD : takeAndScanPackageLI: /system/priv-app/DownloadProvider
S000195 07-01 16:11:03.202 764 811 D PackageManager: SPRD : takeAndScanPackageLI: /system/priv-app/EmergencyInfo
/system/app
S0001C9 07-01 16:11:03.320 764 820 D PackageManager: SPRD : takeAndScanPackageLI: /system/app/ApnSettingsPlugin
S0001CA 07-01 16:11:03.320 764 822 D PackageManager: SPRD : takeAndScanPackageLI: /system/app/BluetoothMidiService
S0001CB 07-01 16:11:03.328 764 821 D PackageManager: SPRD : takeAndScanPackageLI: /system/app/Browser2
S0001CC 07-01 16:11:03.329 764 820 D PackageManager: SPRD : takeAndScanPackageLI: /system/app/BrowserXposed
S0001CD 07-01 16:11:03.329 764 819 D PackageManager: SPRD : takeAndScanPackageLI: /system/app/AppManager
S0001CE 07-01 16:11:03.329 764 822 D PackageManager: SPRD : takeAndScanPackageLI: /system/app/BuildNumberSettings
S0001CF 07-01 16:11:03.330 764 821 D PackageManager: SPRD : takeAndScanPackageLI: /system/app/BuiltInPrintService
S0001D0 07-01 16:11:03.331 764 819 D PackageManager: SPRD : takeAndScanPackageLI: /system/app/CaptivePortalLogin
S0001D1 07-01 16:11:03.331 764 820 D PackageManager: SPRD : takeAndScanPackageLI: /system/app/CallFireWall
S0001D2 07-01 16:11:03.333 764 822 D PackageManager: SPRD : takeAndScanPackageLI: /system/app/CarrierDefaultApp
S0001D3 07-01 16:11:03.335 764 822 D PackageManager: SPRD : takeAndScanPackageLI: /system/app/CompanionDeviceManager
S0001D4 07-01 16:11:03.336 764 820 D PackageManager: SPRD : takeAndScanPackageLI: /system/app/ContactsBlackListAddon
S0001D5 07-01 16:11:03.337 764 819 D PackageManager: SPRD : takeAndScanPackageLI: /system/app/CertInstaller
S0001D6 07-01 16:11:03.338 764 822 D PackageManager: SPRD : takeAndScanPackageLI: /system/app/ContactsDefaultContactAddon
S0001D7 07-01 16:11:03.338 764 821 D PackageManager: SPRD : takeAndScanPackageLI: /system/app/ContactsEFDisplayAddon
S0001D8 07-01 16:11:03.339 764 822 D PackageManager: SPRD : takeAndScanPackageLI: /system/app/Bluetooth
S0001D9 07-01 16:11:03.341 764 821 D PackageManager: SPRD : takeAndScanPackageLI: /system/app/CpMapToolService
S0001DA 07-01 16:11:03.341 764 819 D PackageManager: SPRD : takeAndScanPackageLI: /system/app/CustomizedNet
S0001DB 07-01 16:11:03.344 764 822 D PackageManager: SPRD : takeAndScanPackageLI: /system/app/ExtShared
/vendor/app
S000211 07-01 16:11:03.428 764 829 D PackageManager: SPRD : takeAndScanPackageLI: /vendor/app/ModemNotifier
S000212 07-01 16:11:03.441 764 827 D PackageManager: SPRD : takeAndScanPackageLI: /vendor/app/ValidationTools
S000213 07-01 16:11:03.441 764 830 D PackageManager: SPRD : takeAndScanPackageLI: /vendor/app/SGPS
/data/app
S000226 07-01 16:11:03.487 466 505 W YLOG : [07-01 16:11:03.487] ylog<critical> android cacheline write wrong 39823 -> 7317
S000227 07-01 16:11:03.497 764 837 D PackageManager: SPRD : takeAndScanPackageLI: /data/app/com.zqc.a8541camera2-Mv3YyCT2r7HWO828yQ-z8A==
S000228 07-01 16:11:03.498 764 836 D PackageManager: SPRD : takeAndScanPackageLI: /data/app/com.zqc.camera-ETPmu_J9Yx1Gs98Hg_1P9A==
S000229 07-01 16:11:03.498 764 837 I PackageManager: /data/app/com.zqc.a8541camera2-Mv3YyCT2r7HWO828yQ-z8A== changed; collecting certs
S00022A 07-01 16:11:03.499 764 838 D PackageManager: SPRD : takeAndScanPackageLI: /data/app/com.zqc.a8541camera2-r6zvT4cJY2RMQJ2RRuh1hw==
S00022B 07-01 16:11:03.503 764 838 I PackageManager: /data/app/com.zqc.a8541camera2-r6zvT4cJY2RMQJ2RRuh1hw== changed; collecting certs
S00022C 07-01 16:11:03.506 764 835 D PackageManager: SPRD : takeAndScanPackageLI: /data/app/com.zqc.a8541camera2-G3R5R7L1oLH7wUQIA12efw==
S00022D 07-01 16:11:03.506 764 836 D PackageManager: SPRD : takeAndScanPackageLI: /data/app/com.zqc.a8541camera2-11YzUS-uEuVgvQd50IxbTg==
S00022E 07-01 16:11:03.508 764 836 I PackageManager: /data/app/com.zqc.a8541camera2-11YzUS-uEuVgvQd50IxbTg== changed; collecting certs
S00022F 07-01 16:11:03.508 764 835 I PackageManager: /data/app/com.zqc.a8541camera2-G3R5R7L1oLH7wUQIA12efw== changed; collecting certs
4、扫描应用总共需要1.133 seconds,扫描应用完成后,然后就会解析每个应用的权限,再加载SELinux 文件,以及总共解析了25个应用
//扫描应用的时间
PackageManager: Time to scan packages: 1.133 seconds
//解析应用的权限
PackageParser: Ignoring duplicate uses-permissions/uses-permissions-sdk-m: android.permission.ACCESS_NETWORK_STATE in package: com.zqc.a8541camera2 at: Binary XML file line #15
S000231 07-01 16:11:03.515 764 833 W PackageParser: Ignoring duplicate uses-permissions/uses-permissions-sdk-m: android.permission.READ_PHONE_STATE in package: com.zqc.a8541camera2 at: Binary XML file line #40
S000232 07-01 16:11:03.515 764 833 W PackageParser: Ignoring duplicate uses-permissions/uses-permissions-sdk-m: android.permission.WAKE_LOCK in package: com.zqc.a8541camera2 at: Binary XML file line #49
S000233 07-01 16:11:03.515 764 833 W PackageParser: Ignoring duplicate uses-permissions/uses-permissions-sdk-m: android.permission.WRITE_EXTERNAL_STORAGE in package: com.zqc.a8541camera2 at: Binary XML file line #57
S000234 07-01 16:11:03.516 764 833 W PackageParser: Ignoring duplicate uses-permissions/uses-permissions-sdk-m: android.permission.MOUNT_UNMOUNT_FILESYSTEMS in package: com.zqc.a8541camera2 at: Binary XML file line #59
S000235 07-01 16:11:03.516 764 833 W PackageParser: Ignoring duplicate uses-permissions/uses-permissions-sdk-m: android.permission.WAKE_LOCK in package: com.zqc.a8541camera2 at: Binary XML file line #60
S000236 07-01 16:11:03.516 764 833 W PackageParser: Ignoring duplicate uses-permissions/uses-permissions-sdk-m: android.permission.INTERNET in package: com.zqc.a8541camera2 at: Binary XML file line #70
S000237 07-01 16:11:03.516 764 833 W PackageParser: Ignoring duplicate uses-permissions/uses-permissions-sdk-m: android.permission.RECORD_AUDIO in package: com.zqc.a8541camera2 at: Binary XML file line #73
S000238 07-01 16:11:03.516 764 833 W PackageParser: Ignoring duplicate uses-permissions/uses-permissions-sdk-m: android.permission.CAMERA in package: com.zqc.a8541camera2 at: Binary XML file line #74
PackageManager: Package com.zqc.zqcreporttraffic checking android.permission.INTERNET: BasePermission{f3de817 android.permission.INTERNET}
S000275 07-01 16:11:04.224 764 764 I PackageManager: Granting permission android.permission.INTERNET to package com.zqc.zqcreporttraffic grant 2
M000276 07-01 16:11:04.224 764 764 I PackageManager: Package com.zqc.zqcreporttraffic checking android.permission.READ_PHONE_STATE: BasePermission{2dd0404 android.permission.READ_PHONE_STATE}
S000277 07-01 16:11:04.224 764 764 I PackageManager: Granting permission android.permission.READ_PHONE_STATE to package com.zqc.zqcreporttraffic grant 2
M000278 07-01 16:11:04.224 764 764 I PackageManager: Package com.android.providers.telephony checking android.permission.RECEIVE_SMS: BasePermission{e6c1ded android.permission.RECEIVE_SMS}
S000279 07-01 16:11:04.224 764 764 I PackageManager: Granting permission android.permission.RECEIVE_SMS to package com.android.providers.telephony grant 2
M00027A 07-01 16:11:04.224 764 764 I PackageManager: Package com.android.providers.telephony checking android.permission.WRITE_EXTERNAL_STORAGE: BasePermission{7752422 android.permission.WRITE_EXTERNAL_STORAGE}
S00027B 07-01 16:11:04.224 764 764 I PackageManager: Granting permission android.permission.WRITE_EXTERNAL_STORAGE to package com.android.providers.telephony grant 2
M00027C 07-01 16:11:04.224 764 764 I PackageManager: Package com.android.providers.telephony checking android.permission.INTERACT_ACROSS_USERS: BasePermission{22eeeb3 android.permission.INTERACT_ACROSS_USERS}
S00027D 07-01 16:11:04.224 764 764 I PackageManager: Granting permission android.permission.INTERACT_ACROSS_USERS to package com.android.providers.telephony grant 2
M00027E 07-01 16:11:04.224 764 764 I PackageManager: Package com.android.providers.telephony checking android.permission.INTERACT_ACROSS_USERS_FULL: BasePermission{c285c70 android.permission.INTERACT_ACROSS_USERS_FULL}
S00027F 07-01 16:11:04.224 764 764 I PackageManager: Granting permission android.permission.INTERACT_ACROSS_USERS_FULL to package com.android.providers.telephony grant 2
//加载SELinux
M000F45 07-01 16:11:04.358 427 479 I SELinux : SELinux: Loaded file_contexts
//可以看出加载了26个应用
S000F4A 07-01 16:11:04.588 764 764 V PackageManager: reconcileAppsData finished 26 packages
5、解析应用完成后就会去安装每个应用
M000F4B 07-01 16:11:04.599 427 479 W installd: Ignoring /data/data/com.android.defcontainer/lib with unexpected GID 0 instead of 10006
M000F4C 07-01 16:11:04.600 427 479 W installd: Ignoring /data/data/com.lovelyfont.defcontainer/lib with unexpected GID 0 instead of 1000
M000F4D 07-01 16:11:04.601 427 479 W installd: Ignoring /data/data/com.zqc.screensaver/lib with unexpected GID 0 instead of 1000
M000F4E 07-01 16:11:04.601 427 479 W installd: Ignoring /data/data/android/lib with unexpected GID 0 instead of 1000
M000F4F 07-01 16:11:04.601 427 479 W installd: Ignoring /data/data/com.android.providers.settings/lib with unexpected GID 0 instead of 1000
M000F50 07-01 16:11:04.601 427 479 W installd: Ignoring /data/data/com.android.inputdevices/lib with unexpected GID 0 instead of 1000
M000F51 07-01 16:11:04.601 427 479 W installd: Ignoring /data/data/com.android.server.telecom/lib with unexpected GID 0 instead of 1000
M000F52 07-01 16:11:04.603 427 479 W installd: Ignoring /data/data/com.sprd.customizedNet/lib with unexpected GID 0 instead of 1000
M000F53 07-01 16:11:04.605 427 479 W installd: Ignoring /data/data/com.android.settings/lib with unexpected GID 0 instead of 1000
M000F54 07-01 16:11:04.607 427 479 W installd: Ignoring /data/data/com.android.location.fused/lib with unexpected GID 0 instead of 1000
M000F55 07-01 16:11:04.611 427 479 W installd: Ignoring /data/data/com.sprd.engineermode/lib with unexpected GID 0 instead of 1000
M000F56 07-01 16:11:04.614 427 479 W installd: Ignoring /data/data/com.sohu.inputmethod.sogou/lib with unexpected GID 0 instead of 10055
M000F57 07-01 16:11:04.622 427 479 W installd: Ignoring /data/data/com.redstone.ota.ui/lib with unexpected GID 0 instead of 1000
M000F58 07-01 16:11:04.623 427 479 W installd: Ignoring /data/data/com.android.pacprocessor/lib with unexpected GID 0 instead of 10044
M000F59 07-01 16:11:04.624 427 479 W installd: Ignoring /data/data/com.sprd.validationtools/lib with unexpected GID 0 instead of 1000
6、启动systemUI
S001F5E 07-01 16:11:06.873 764 764 I SystemServer: StartSystemUI
M002069 07-01 16:11:07.280 989 989 V SystemUIService: Starting SystemUI services for user 0.