android 系统架构

移动开发 waitig 385℃ 百度已收录 0评论


android 系统是在Linux 系统的基础上增加了Dalvik虚拟机。Dalvik 虚拟机和java 虚拟机是不同的,其主要体现有:

1.Java虚拟机运行的是Java字节码,而Dalvik虚拟机运行的则是其专有的文件格式DEX(Dalvik Executable)。

2.在Java SE程序中的Java类会被编译成一个或者多个字节码文件(.class)然后打包到JAR文件,而后Java虚拟机会从相应的CLASS文件和JAR文 件中获取相应的字节码;Android应用虽然也是使用Java语言进行编程,但是在编译成CLASS文件后,还会通过一个工具(dx)将应用所有的 CLASS文件转换成一个DEX文件,而后Dalvik虚拟机会从其中读取指令和数据。

2014年android L已经移除Dalvik


android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层




蓝色的代表java程序,黄色的代码为运行JAVA程序而实现的虚拟机,绿色部分为C/C++语言编写的程序库,红色的代码内核(linux内核+driver)。在Application
Framework之下,由C/C++的程序库组成,通过JNI完成从JAVA到C的调用


应用层:所有安装在手机上的应用程序都属于这一层,还有一些系统自带的音乐播放器,短信等程序。并且,所有的应用程序都是使用java 语言来编写的。


应用程序框架:这一层主要为我们提供了开发应用程序的时候会使用到的各种API
,我们可以使用这些API来开发我们自己的应用程序

Views
System:我们平常接触得比较多的部分,是各种视图的集合。按钮 ,文本,List ,Grids 等等,甚至是内嵌的网页浏览器

内容提供器(Content
Providers:常说的四大组件之一,可以通过内容提供者访问其他应用程序的数据库,最常见的例如:我们手机自带的的联系人数据库。

资源管理器(Resource
Manager
):提供访问我们本地的非代码资源,比如我们的图片,layout ,file ,存储在本地的字符串等。调用方法:R.XXXX

通知管理器(Notification
Manager
):可以让我们的程序在我们手机的状态栏中自定义通知,警告,以及提供点击访问。

活动管理器(Activity
Manager
):用来管理应用程序生命周期并提供常用的导航回退功能。


系统运行库层:

   
Android包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过Android应用程序框架为开发者提供服务。


    以下是一些核心库:

    主要包括基本的C库、以及多媒体库以支持各种多媒体格式、位图和矢量字体、2D和3D图形引擎、浏览器、数据库支持。

 1.Bionic系统C库。

 2.媒体库,基于PacketVideo OpenCORE。

 3.Surface Manager 顾名思义,用于管理Surface。

 4.Webkit,LibWebCore 浏览器,基于Webkit引擎。

 5.SGL 底层的2D图形引擎

 6.3D libraries 基于OpenGL ES 1.0 APIs实现

 7.FreeType 位图(bitmap)和矢量(vector)字体显示。

 8.SQLite 一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。

 

Linux
内核


Android 的核心系统服务依赖于 Linux 2.6 内核 ,如安全性,内存管理,进程管理, 网络协议栈和驱动模型。 

Linux 内核也同时作为硬件和软件栈之间的抽象层。其外还对其做了部分修改,主要涉及两部分修改:

   a)Binder   

  (IPC):提供有效的进程间通信,虽然linux内核本身已经提供了这些功能,但Android系统很多服务都需要用到该功能,为了某种原因

  其实现了自己的一套。

   b)电源管理:为手持设备节省能耗。


http://www.cnblogs.com/lijunamneg/archive/2013/01/18/2866953.html



本文由【waitig】发表在等英博客
本文固定链接:android 系统架构
欢迎关注本站官方公众号,每日都有干货分享!
等英博客官方公众号
点赞 (0)分享 (0)