Android启动流程分析(一)

#############################################

本文为极度寒冰原创,转载请注明出处

#############################################

Android的启动流程绝大部分人都知道,但是大多数人都是这样描述的:

Android启动,首先是启动Bootloader,然后挂载kernel,挂载完kernel之后,会启动android的init进程,init进程会去孵化Zygote,Zygote是android的重要支柱之一,然后由zygote启动的systemserver,systemserver启动了系统的各种关键的service,然后service启动后,就进入了Launcher的apk,启动完毕。。

这么说的确可以简单的概括android的启动过程,但是,android的启动过程绝不仅仅是这些。

我们可以讨论如下的问题:

ap和bp的模块是怎么连接的?

init进程是如何解析init.rc的呢?

init.rc的语法是什么呢?

init进程如何去启动zygote?

zygote的功能是什么?

........

在读完android启动流程分析的一系列文章之后,相信会对android的启动流程有个更深层次的认识。

首先,介绍一个非常好的网站:

http://androidxref.com/

在这个网站上面,我们可以看到android的各个项目的源码,包括kernel和ap

我们的分析,也都是基于android 5.1的源码开始的。

闲话不多说,我们首先来看看init进程。

时间: 2024-09-30 06:54:53

Android启动流程分析(一)的相关文章

Android 启动流程分析

原文:https://www.jianshu.com/p/a5532ecc8377 作者曾经在高通的Android性能组工作,主要工作是优化Android Application的启动时间. APP基础理论 要想优化App启动时间, 第一步就是了解App启动进程的工作原理. 有几个基础理论: Android Application与其他移动平台有两个重大不同点: 每个Android App都在一个独立空间里,意味着其运行在一个单独的进程中,拥有自己的VM, 被系统分配一个唯一的user ID A

Android启动流程分析(十) action的执行和service的启动

############################################# 本文为极度寒冰原创,转载请注明出处 ############################################# 在前面的文章分析完init.rc的解析以后,我们知道现在action按照init.c的main函数中的秩序,维护了一条qlist的链表,listnode为action_qlist service也维护了一条链表,listnode为service_list. 那么,在android

Android启动流程分析(七) init.rc的解析

############################################# 本文为极度寒冰原创,转载请注明出处 ############################################# Init.rc的解析过程是笔者认为在android启动过程中,最复杂,最难理解的部分. 虽然它的内容很少,但是却包含了非常多的处理,接下来我们来慢慢的分析. 经过前面的分析,我们知道了read完init.rc的文件后,保存到了data的数组,传递到了parse_config的函数

Android启动流程分析(八) 解析init.rc的action

############################################# 本文为极度寒冰原创,转载请注明出处 ############################################# 上一章讲述了android启动过程中,加载init.rc之后需要对其进行解析. 而解析又根据三个不同的SECTION来执行不同的初始化的文件,分别是parse_action,parse_service,parse_import. 那么,这一节,我们就从parse_action来讲

Android启动流程分析(九) 解析init.rc的service

############################################# 本文为极度寒冰原创,转载请注明出处 ############################################# 在分析完解析init.rc的action之后,剩下的一部分就是解析service了. 而解析service还是需要回到parse_config里面来.根据前面的知识,我们也可以很容易的知道在关键字为section的时候,会进入到parse_new_section. 这里会先执行p

Android启动流程分析(二) init进程的启动

############################################# 本文为极度寒冰原创,转载请注明出处 ############################################# 分析init进程,首先要分析init进程是如何启动的, init的源码位于(system/core/init),我们先来看看init进程的android.mk 下面是从system/core/init模块拿出来的一段code: LOCAL_MODULE:= init LOCAL_

Android启动流程分析(十二) SystemServer

############################################# 本文为极度寒冰原创,转载请注明出处 ############################################# SystemServer也是系统的一个重要的守护进程,从SystemServer的进程中,我们看到了系统的各种关键的Service的启动. 另外,根据前面的zygote的分析,我们知道了systemServer在android的启动过程中是肯定要启动的. 因为在init.rc里面

Android启动流程分析(十一) zygote的启动

############################################# 本文为极度寒冰原创,转载请注明出处 ############################################# 前面的文章花了很大的篇幅去介绍了init进程如何去解析init.rc,如何去执行系统的一些服务. 那么,我们所说的zygote是怎么启动的呢?zygote又是具体负责了哪些工作呢? 本文我们来一探究竟. zygote在inir.rc中有如下的描述: service zygote

Cocos2d-x3.3RC0的Android编译Activity启动流程分析

本文将从引擎源代码Jni分析Cocos2d-x3.3RC0的Android Activity的启动流程,以下是具体分析. 1.引擎源代码Jni.部分Java层和C++层代码分析 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXV4aWt1b18x/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" > watermark/2/text/aHR0cDov