framework启动流程之android应用程序

转载请注明出处:http://blog.csdn.net/droyon/article/details/38022887

Linux启动流程大体分三歩:1、开机启动bootloader。2、操作系统内核初始化。3、执行第一个应用程序。

1、开机就是给硬件设备上电,在上电过程中cpu的作用是执行执行,故而,只有其他硬件设备初始化ok,cpu执行指令才有意义,故而cpu最后上电。

cpu复位完毕就开始执行固定内存的程序指令,此时的执行所在的程序称作“bootloader”引导程序。用于装载用户程序。装载需要应用程序地址。

2、内核初始化。除bootloader以为的程序,在cpu看来都是用户程序。故而此时的内核程序就是上一步中的应用程序。从软件的角度来说,又可分为“内核程序”,应用程序。

内核程序的作用是初始化各种硬件,包括内存、网络接口,显示器,输入设备等。执行完这些内核程序就开始执行应用程序了。

3、第一个应用程序就是Home程序。就是Launcher,用于管理各种App。Launcher提供一种入口进而启动其他应用程序。

Android所使用的Linux架构:

1、处理器复位完毕,执行只读ROM区的程序,此程序就是bootloader。这段程序会从处理器的引脚高低电平状态装载应用程序。比如:usb口,串口,sd卡,并口flash等。

多数会从NAND Flash芯片中的0X00000000地址开始装载程序。对于小型嵌入式系统,此段程序就是最终要执行的程序。但对android而言,该地址中的程序还不是android应用程序,只是uboot或者fastboot程序,其作用是初始化硬件设备。比如网口。同时提供刷机(内核烧写、升级)也就是向NAND Flash中写入新的数据。

uboot执行时,会检测一些特定按键,这些按键是uboot在编译时预先约定好的,用于进入调试模式。例如:电源键 + 音量下键。
如果用户没有按这些按键,则uboot会跳过加载调试模式,进入NADN Flash中装载内核程序。装载地址由uboot指定。

2、Linux内核装载完毕后,开始执行内核初始化。

android内核会加载init.rc文件,根据此脚本文件初始化应用程序。

言归正传,上述为android内核启动流程,对于Linux来说,Android系统仅仅是其一个应用程序。应用程序包含很多进程,android系统第一个应用进程就是zygote,这个进程就是LInux进程根据上述init.rc中配置信息启动的。zygote是一个中心进程,他会孵化其他应用进程,包含我们每一个apk所在的进程。

zygote进程主要包括两个模块。1、socket服务端:用于接受并启动新Dalvik进程的命令。每一个apk进程都是一个新的dalvik虚拟机进程,我们可以直接使用dalvik虚拟机识别的java程序开发android应用程序。2、Framework共享类和资源。加载preload-classes,preload-resources定义的类和资源。

zygote是android第一个进程,其应用程序名为:app_process,位于system/bin下。zygote是第一个应用程序,其孵化的第一个应用程序叫做system server,也运行在app_process中。

时间: 2024-12-29 17:59:38

framework启动流程之android应用程序的相关文章

Android应用程序消息处理机制(Looper、Handler)分析

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6817933 Android应用程序是通过消息来驱动的,系统为每一个应用程序维护一个消息队例,应用程序的主线程不断地从这个消息 队例中获取消息(Looper),然后对这些消息进行处理(Handler),这样就实现了通过消息来驱动应用程序的执行,本文将详细分析Android 应用程序的消息处理机制. 前面我们学习Android应用程序中的Activ

Android应用程序安装与Launcher启动机制

以下资料摘录整理自老罗的Android之旅博客,是对老罗的博客关于Android底层原理的一个抽象的知识概括总结(如有错误欢迎指出)(侵删):http://blog.csdn.net/luoshengyang/article/details/8923485http://blog.csdn.net/luoshengyang/article/details/12957169 整理by Doing Android系统在启动的过程中,会启动一个应用程序管理服务PackageManagerService,

Android应用程序进程启动过程的源代码分析

文章转载至CSDN社区罗升阳的安卓之旅,原文地址: http://blog.csdn.net/luoshengyang/article/details/6747696 Android 应用程序框架层创建的应用程序进程具有两个特点,一是进程的入口函数是ActivityThread.main,二是进程天然支持Binder进程间通信 机制:这两个特点都是在进程的初始化过程中实现的,本文将详细分析Android应用程序进程创建过程中是如何实现这两个特点的. Android应用程序框架层创建的应用程序进程

android学习笔记--android启动过程之init.rc文件浅析

1.  init.rc文件结构文件位置:init.c  : /system/core/initinit.rc  : /system/core/rootdir 首先init.rc文件是以模块为单位的,每个模块里的内容都是一起执行的,模块分为3种类型:on.service.import.我们可以看下init.rc文件是怎么写的:1.import import /init.usb.rc import /init.${ro.hardware}.rc import /init.trace.rc 上面的内容

Android应用程序启动过程——Launcher源码分析

当我们在Launcher界面单击一个应用程序图标时就会启动一个程序,那这一个过程究竟发生了些哪样呢?让我们跟踪Launcher源码来分析一下吧. 先上流程图: step1.追踪Launcher  从源码中我们可以发现Launcher其实也是一个程序,它继承于Activity.找到该文件中的onCreate()方法,代码片段如下: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceSta

Android应用程序启动时发生AndroidRuntime : ClassNotFoundException for Activity class的解决方法

在android应用程序启动时抛出下面异常导致启动失败:07-09 17:12:35.709: ERROR/AndroidRuntime(3866): Uncaught handler: thread main exiting due to uncaught exception 07-09 17:12:35.719: ERROR/AndroidRuntime(3866): java.lang.RuntimeException: Unable to instantiate activity Com

activiti自定义流程之Spring整合activiti-modeler5.16实例(六):启动流程

注:(1)环境搭建:activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建        (2)创建流程模型:activiti自定义流程之Spring整合activiti-modeler5.16实例(二):创建流程模型        (3)流程模型列表展示:activiti自定义流程之Spring整合activiti-modeler5.16实例(三):流程模型列表展示        (4)部署流程定义:activiti自定义流程之Spring整合

Android应用程序的Activity启动过程简要介绍和学习计划

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6685853 在Android系统中,Activity和Service是应用程序的核心组件,它们以松藕合的方式组合在一起构成了一个完整的应用程序,这得益 于应用程序框架层提供了一套完整的机制来协助应用程序启动这些Activity和Service,以及提供Binder机制帮助它们相互间进行通信.在前 面的文章Android进程间通信(IPC)机制B

Android应用程序启动过程源代码分析

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6689748 前文简要介绍了Android应用程序的Activity的启动过程.在Android系统中,应用程序是由Activity组成的,因此,应用程 序的启动过程实际上就是应用程序中的默认Activity的启动过程,本文将详细分析应用程序框架层的源代码,了解Android应用程序的启动过程. 在上一篇文章Android应用程序的Activit