0
点赞
收藏
分享

微信扫一扫

Android启动流程解析

第一阶段是Linux的启动: Bootloader,Kernel,Driver等 第二阶段是真正的Android的启动 整体流程概括为:启动BootLoader->加载系统内核->启动Init进程->启动Zygote进程->启动Runtime进程->启动本地服务->启动Home Launcher

Android启动生命周期流程

第一步:启动Linux

Bootloader Kernel 第二步:Android系统启动

Android从Linux系统启动有4个步骤;

init进程启动 Native服务启动 System Server,Android服务启动 Home启动 第三步:应用程序启动

运行PackageManager

流程说明

  1. Android的servicemanager文件位于/system/bin/servicemanager中,在系统启动一开始会通过源码为ServiceManager.java的文件实例化一个Daemon Process,用于在后台维护系统的运行;
  2. 启动/system/bin下的zygote的时候实际上启动了app_main.cpp,该系统文件CPP位于frameworks\base\cmds\app_process\app_mian.cpp文件中;
  3. app_main.cpp调用了AndroidRuntime.cpp,然后AndroidRuntime.cpp通过JNI调用了ZygoteInit.java, ZygoteInit.java又调用了SystemServer.java;
  4. SystemServer.java通过JNI调用了com_android_server_systemService.cpp,然后通过运行system_init.cpp反过来调用SystemServer.java中的init2()这个方法,此时在init2()这个方法中调用了runtime->callStatic(“com/android/server/SystemServer”,”init2”)启动ServerThread线程
  5. 服务线程ServerThread包含下面的功能:

PowerManagerService:电源管理; ActivityManagerService:组件管理; WindowManagerService:窗口管理; PackageManagerService:应用程序是通过该Service启动的 ......

举报

相关推荐

0 条评论