ap日志查看Android启动流程

ap日志查看Android启动流程

event日志查看:adb logcat -b “events” > events.txt

看了 Android系统启动init进程 – 干了啥事init进程——从kernel Log查看,越来越云里雾里,知道大致情况就行:Loader->Kernel->init->Zygote->SystemServer


event日志关键字boot_progress


在这里插入图片描述
一般搜索“boot_progress”直观的查看时间:

  • boot_progress_start
  • boot_progress_preload_start
  • boot_progress_preload_end
  • boot_progress_system_run
  • boot_progress_pms_start
  • boot_progress_pms_system_scan_start
  • boot_progress_pms_data_scan_start
  • boot_progress_pms_scan_end
  • boot_progress_pms_ready
  • boot_progress_ams_ready
  • boot_progress_enable_screen

在这里插入图片描述

查看EventLogTags.logtags

在这里插入图片描述

启动SystemServer开始


boot_progress_start、boot_progress_preload_start、boot_progress_preload_end

对照上面Events日志缺少boot_progress_start、boot_progress_preload_start、boot_progress_preload_end,其实此时是在Zygote进程启动SystemServer。
在这里插入图片描述
frameworks/base/core/java/com/android/internal/os/ZygoteInit.java
在这里插入图片描述

boot_progress_system_run

frameworks/base/services/core/java/com/android/server/EventLogTags.logtags
在这里插入图片描述
在这里插入图片描述
frameworks/base/services/java/com/android/server/SystemServer.java
在这里插入图片描述 在这里插入图片描述

boot_progress_pms_start

frameworks/base/services/core/java/com/android/server/EventLogTags.logtags
在这里插入图片描述
在这里插入图片描述
SystemServer添加PackageManagerService.main:
boot_progress_pms_startboot_progress_pms_system_scan_startboot_progress_pms_data_scan_startboot_progress_pms_scan_endboot_progress_pms_ready

    public main(Injector injector, boolean onlyCore, boolean factoryTest) {
    
    
        // 。。。。。。。。。。。。
        EventLog.writeEvent(EventLogTags.BOOT_PROGRESS_PMS_START,
                SystemClock.uptimeMillis());

        if (mSdkVersion <= 0) {
    
    
            Slog.w(TAG, "**** ro.build.version.sdk not set!");
        }
        // 。。。。。。。。。。。。
            long startTime = SystemClock.uptimeMillis();

            EventLog.writeEvent(EventLogTags.BOOT_PROGRESS_PMS_SYSTEM_SCAN_START,
                    startTime);
            // 。。。。。。。。。。。。
            File frameworkDir = new File(Environment.getRootDirectory(), "framework");
            // 。。。。。。。。。。。。
            // Collect vendor/product/system_ext overlay packages. (Do this before scanning
            // any apps.)
            // 。。。。。。。。。。。。
            if (!mOnlyCore) {
    
    
                EventLog.writeEvent(EventLogTags.BOOT_PROGRESS_PMS_DATA_SCAN_START,
                        SystemClock.uptimeMillis());
                scanDirTracedLI(sAppInstallDir, 0, scanFlags | SCAN_REQUIRE_KNOWN, 0,
                        packageParser, executorService);

            }
            // 。。。。。。。。。。。。
            EventLog.writeEvent(EventLogTags.BOOT_PROGRESS_PMS_SCAN_END,
                    SystemClock.uptimeMillis());
            Slog.i(TAG, "Time to scan packages: "
                    + ((SystemClock.uptimeMillis()-startTime)/1000f)
                    + " seconds");
            // 。。。。。。。。。。。。
            // can downgrade to reader
            t.traceBegin("write settings");
            mSettings.writeLPr();
            t.traceEnd();
            EventLog.writeEvent(EventLogTags.BOOT_PROGRESS_PMS_READY,
                    SystemClock.uptimeMillis());

boot_progress_ams_ready

frameworks/base/services/core/java/com/android/server/am/EventLogTags.logtags
在这里插入图片描述
在这里插入图片描述
frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java

        Slog.i(TAG, "System now ready");
        EventLogTags.writeBootProgressAmsReady(SystemClock.uptimeMillis());

frameworks/base/services/core/java/com/android/server/wm/ActivityTaskManagerService.java

writeBootProgressEnableScreen(SystemClock.uptimeMillis());

这里注意 ActivityManagerService.systemReadyActivityManagerService.Lifecycle.startService 是不同的
在这里插入图片描述 在这里插入图片描述
OK,到此结束。

猜你喜欢

转载自blog.csdn.net/qq_23452385/article/details/113057861
今日推荐