当前位置:   article > 正文

Android系统底层启动源码分析(开机启动)_android启动源码

android启动源码


Android系统底层启动源码分析(开机启动)

  • 总体启动过程
  • Android上电启动后主要执行脚本和启动的服务
  • Android启动细节
  • Android启动整体流程图

一、总体启动过程

• 启动入口:init进程,是Linux系统中用户空间的第一个进程
• 加载配置(init.rc)
• 启动孵化器(zygote)
• system_init启动Native
• ServiceThread启动Java

二、Android上电启动后主要执行脚本和启动的服务

Init是第一个被加载的用户进程,其会先执行init.rc脚本,源码位置:/system/core/init/init.c

进程入口:Main方法,启动init.rc系统启动的配置文件

这里写图片描述

init.rc配置文件信息:

  • 文件位置:/system/core/rootdir
  • 守护进程启动(Daemon Process):/system/bin/servicemanager
  • Zygote——app_main.cpp

在脚本里面各种create、mount、启动service等,例如启动重要的Zygote孵化器:

这里写图片描述

之后进入App_main,cpp中启动孵化器:
这里写图片描述

进入Runtime.Start:
这里写图片描述

注:
Init1 和init2 两个主要函数 ,其中init1主要是kernel启动后的对libraries层的intiàsystem_init(), 如其中的一些suiface manager、libc等,然后调用init2
Init2主要是对 Framwork层的init


三、 Android启动细节:

Early init -> init –> early boot -> boot
由Init启动Zygote之后:
当解析完init.rc和设备配置信息后会获取到一系列Action, Init将动作的执行划分为四个阶段:

  • early-init
  • Init
  • early-boot
  • boot

Zygote简介:

  • 本身为Native的应用程序
  • 由init进程通过init.rc加载

启动过程:

  • Main方法中AppRuntime.start(),工作由父类AndroidRuntime来完成
  • 在AndroidRuntime中启动“com.android.internal.os.ZygoteInit”的main方法
  • 进入java世界的入口

细节内容:
在AndroidRuntime中同时启动的有:

  • startVM——开启虚拟机(查看堆内存设置)
  • 注册JNI函数
  • 各类参数的传递

Zygote孵化器的守护进程(Daemon Process)

这里写图片描述

同时会开启Adb的守护进程,在此之后才可以用adb与Android设备连接,这也是为什么有时候Android系统界面还没起来,却可以用adb的原因:

这里写图片描述

Init.rc中的启动级别,通过on early init …on boot等区分
创建Java虚拟机JVM:
这里写图片描述

启动虚拟机并且注册JNI Native函数(JNI所用),为了后面加载libraries中的C/C++代码
这里写图片描述


ServerThead的启动:
启动步骤:

  1. ZygoteInit在main方法中利用JNI开启com.android.server.SystemServer
  2. 启动system_init.cpp处理Native层的服务
    
    • 1
  3. 然后调用SystemServer的init2()
  4. 启动ServiceThread,启动android服务 
    
    • 1
  5. Launcher启动

细节内容

  • preloadClasses()—通过反射加载各个类
  • Launcher的启动—通过过滤器中HOME配置加载

预加载class(Zygote中的main函数中执行,这个过程大约加载了2000多个类,消耗15s以上)
这里写图片描述

到init2中PackageManager会扫描所有apk的清单文件,将带有Home的启动(所有开机启动的apk都会在这一步启动)

这里写图片描述


四、Android启动整体流程图

这里写图片描述


博主热门文章推荐:

一篇读懂系列:

LoRa Mesh系列:

网络安全系列:

嵌入式开发系列:

AI / 机器学习系列:


在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/654450
推荐阅读
相关标签
  

闽ICP备14008679号