Android 的系统构架分为四层,而这四层又是由五部分组成的,请见下图:
从上图中可以看出,Android系统架构从下层到上层分别是:Linux内核层、系统运行库层、应用程序框架层和应用程序层。
处于最底层的Linux内核层提供了基本的系统功能,例如流程管理、内存管理、设备管理、电源管理等。它还提供许多驱动,例如显示驱动、摄像头驱动、键盘驱动、wifi驱动、内存驱动等。
如果你想从事Android驱动开发,那就应该研究Android的Linux内核。
这一层大部分都是用C/C++写的。这一层为上层提供它们所需的Java类库和运行环境。如果你是从事Android系统开发的,那就应该研究Android的系统库和Android运行时。
从图中可以看出,系统运行库层可以分成两部分,分别是系统库和Android运行时。
它是连接应用程序框架层与Linux内核层的重要纽带。Android包含一些 C/C++库,这些库能被 Android 系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。
以下是一些核心库:
Android应用程序都在Android运行时中执行,其运行时分为核心库和Dalvik虚拟机两部分。
核心库提供了Java API中的大多数功能,同时也包含了Android的一些核心API。
Dalvik虚拟机是Google公司自己开发的用于Android平台的Java虚拟机,它适合内存和处理器速度有限的系统。不同于JDK运行 .class 文件,Dalvik虚拟机运行 .Dex 文件(由 .class 转换而来)。
在Android中可以同时运行多个Dalvik实例,并且每个Dalvik应用都是一个独立的Linux进程。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。
很长时间以来,Dalvik虚拟机一直被用户指责为拖慢Android运行速度、不如IOS的根源。不过Google在2014年的I/O大会上推出了Android L,删除了Dalvik,由传闻已久的ART代替,表现更佳。
这一部分用Java编写,开发人员可以直接使用其提供的组件来进行快速的应用程序开发。若是从事Android应用程序开发,那应该研究Android的应用框架层和应用程序层。
框架层由多个系统服务组成,应用层的程序时刻都在与这些系统服务打交道。每一次构造窗口、处理用户交互事件、绘制界面、获得当前地理信息,都是在各个系统服务支持下实现的。该层是Android应用开发的基础,开发人员大部分情况是在和它打交道。
应用程序框架层包括:
应用程序框架层提供了许多高级服务的Java类的形式。应用程序开发人员可以通过实例化这些类来调用这些服务。
Android应用层由运行在Android设备上的所有应用程序(APP)共同构成,它不仅包括通话、短信、联系人等系统应用,还包括其他后续安装到设备中的第三方应用。
最后说一下Dalvik和ART的不同。
由于Dalvik被指责为拖慢应用程序运行速度的罪魁祸首,Google 花了两年的时间来开发执行效率更高更省电的ART(Android Runtime),用以代替Dalvik。
ART执行程序的方式与Dalvik完全不同:
不过,ART需要更大的内存空间占用,可能会增加10%-20%,而且程序安装速度比Dalvik慢。
还好现在的智能手机ROM都比较大了,不少旗舰级的ROM都到了3G,低端机也有1G了,512M的很少了,ART 以“空间换时间”的做法看似是比较明智的。
Google已经不是第一次使用“空间换时间”的把戏了,例如,大家都知道Chrome浏览器很快很流畅,可是内存占用也多。