这篇文章有点像,之前我谈的对计算机的认识,都是很浅显,没有依据的一些理解。
之所以说没有依据,是我没有仔细的深究,因为,我看了很多资料,很难懂,不是很理解,却又理解一点点。自己不现在做一下梳理,再把这个事放一下,心里会很不舒服,反而会卡在这个地方,没法前进。
看不懂别人写的,是因为,基础不够。所以就简单的说一下。
首先呢,我认识到,Android是一个基于Linux系统的系统。什么是Linux呢?简单的说就是一个操作系统,是Unix的一种,可以说是他发展而来的。Linux内核里面集成了调用实体设备的驱动程序,用来驱动真实实体设备。并暴露接口调用给中间层。中间层可以分为两块:运行库和运行时。并封装了相应的接口调用给应用程序框架层。(系统运行库:当我们使用Android应用框架时,Android系统会通过一些C/C++库,来支持我们使用的各个组件。运行时:Android平台的虚拟机)。应用程序框架层封装了开发应用所需要的核心API,提供了丰富的组件。在应用层就是我们使用的APP。
上面只是一个静态的架构,看不出来整个Android的运行状况。他的设计就是这样的,上面两层是用JAVA语言,下面两层是C/C++语言。
从手机启动开始,我们来分析一下动态的过程。
首先,通过bootloader(系统加载器,这一部分是固化在手机硬件中的)加载Linux内核。在Linux内核加载启动时,与普通的得Linux启动过程相同,先初始化内核,然后调用init进程。init进程启动zygote它解配置文件init.re(系统配置文件)及initXXX.rc(与硬件平台相关的文件,单片机中外接的硬件,要初始化某些设置一样吧,我我理解是这样的)的内容,执行一系列的命令,包括创建mount目录,安装文件系统,设置属性,启动属性服务器,启动Socket服务端口,加载preload-classes和preload-resource(Framework大部分类及资源),fork启动新的进程Zygnote。
这是手机启动的过程。手机在使用中,是通过Zygnote进程孵化出一些进程,这些进程也就是我们所说的APP。
越写越头昏,涉及的太多东西。知识底蕴不够,就不在深究了。这些放一放,先把应用层开发的学好,再回头来看这些问题。
下个星期一,要开始实习了!!!终于可以接触真正的工作了。加油!!!