Android目前是一个非常优秀的嵌入式系统,具有非常完善的系统架构!

Android系统架构分为4层:(从下至上)

第一层:Linux内核层,包括驱动程序以及管理内存、进程、电源等资源的程序

    因为Android是基于Linux内核的,所以Android和其他Linux系统的核心部分的差异很小;

    不同版本的Android使用的Linux内核版本有差异,所以不同Android版本的驱动程序可能不通用;

第二层:c/c++代码库,包括使用C/C++编写的代码库(Linux下的.so文件使用C/C++编写的),以及嵌入到APK程序中的NDK代码,也包括Dailvk虚拟机的

    运行时(Runtime);

    Dailvk虚拟机是Google公司设计的基于Android平台的虚拟机,它可以支持已转换为 .dex(即Dalvik Executable)格式的Java应用程序的运行;

    这些库能被Android系统中不同的组件使用,通过Android应用程序为开发者提供服务;

    一些核心库:

    (1)系统C库:一个从BSD继承来的标准C系统函数库(libc),是专门为基于embedded linux的设备定制的;

    (2)媒体库:基于PacketVideo OpenCORE,支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4,H.264,MP3,AAC,AMR,JPG,PNG;

    (3)Surface Manager:对显示子系统的管理,并且为多个应用程序提供了2D和3D图层的无缝融合;

    (4)LibWebCore:最新的web浏览器引擎,支持Android浏览器和一个可嵌入的web视图;

    (5)SGL:底层的2D图形引擎;

    (6)3D Libraries:基于OpenGL ES 1.0 APIs实现,该库可以使用硬件3D加速(如果可用)或者使用高度优化的3D软加速;

    (7)FreeType:位图和矢量字体显示;

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

    Android运行库:

    Android包括了一个核心库,该核心库提供了Java编程语言核心库的大多数功能。

    每一个Android应用程序都在自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例,Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。Dalvik虚拟机执行.dex的Dalvik可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由Java编译器编译,然后通过SDK中的dx工具转化成.dex格式由虚拟机执行;

第三层:Android SDK API,直接面向应用程序的Java APK

    这一层可以成为Java API层,因为Android SDk API是用Java语言编写的。实际上这一层就是用Java编写的各种Library,只不过这些library是基于Dalvik虚拟机格式的。

第四层:应用程序

    这一层是所有的Android用户都要接触到的,因为这一层相当于Android的UI。所有的Android应用程序(包括拍照,电话,短信,Android的桌面,浏览器以及各种游戏)都属于这一层。主要依靠第三层中的Android SDK API来完成各种功能。

以上部分内容转自【http://blog.chinaunix.net/uid-25838286-id-3011173.html,谢谢分享!】

    

    

1.1Android系统架构的更多相关文章

  1. (系统架构)标准Web系统的架构分层

    标准Web系统的架构分层 1.架构体系分层图 在上图中我们描述了Web系统架构中的组成部分.并且给出了每一层常用的技术组件/服务实现.需要注意以下几点: 系统架构是灵活的,根据需求的不同,不一定每一层 ...

  2. 千万pv大型web系统架构,学习从点滴开始

     架构,刚开始的解释是我从知乎上看到的.什么是架构?有人讲, 说架构并不是一 个很 悬 乎的 东西 , 实际 上就是一个架子 , 放一些 业务 和算法,跟我们的生活中的晾衣架很像.更抽象一点,说架构其 ...

  3. [网站性能1]对.net系统架构改造的一点经验和教训

    文章来源:http://www.admin10000.com/document/2111.html 在互联网行业,基于Unix/Linux的网站系统架构毫无疑问是当今主流的架构解决方案,这不仅仅是因为 ...

  4. 5G系统架构

    原文标题:迈向5G之路,颠覆性的5G系统架构?   本文部分图片,资料摘自<迈向5G C-RAN:需求.架构与挑战> 突如一夜春风来,随着Polar码与LDPC码作为5G编码候选方案,通信 ...

  5. 异构(兼容dubbo)SOA系统架构(.net)优化升级

    前面一片文章已经提到我司的异构(兼容dubbo)SOA系统架构,解决了不少技术痛点,也还算比较完善,也顺利推广开来. 但作为项目的开发者,自己产品的问题心里是清楚的,离自己满意还是有不小的距离. 在推 ...

  6. 【系统架构】IT职业技能图谱(点开大图查看)

    本文地址 1 程序开发语言综述 2 iOS开发工程师必备技能 3 运维工程师必备技能 4 前端工程师必备技能 5 大数据工程师必备技能 6 云计算工程师必备技能 7 安全工程师必备技能 8 移动无线测 ...

  7. [Architecture] 系统架构正交分解法

    [Architecture] 系统架构正交分解法 前言 随着企业成长,支持企业业务的软件,也会越来越庞大与复杂.当系统复杂到一定程度,开发人员会发现很多系统架构的设计细节,很难有条理.有组织的用一张大 ...

  8. 国内经典BI系统架构分析

    谈起商业智能BI,也许大家并不陌生,但你是否了解国内的各类BI系统架构? 自国内商业智能发展以来,就系统结构方面已经历了多次优化性的变革.目前国内商业智能BI系统的经典架构的模式包括数据层.业务层和应 ...

  9. Android入门(二):Android的系统架构

    android的系统架构和其操作系统一样,采用了分层的架构.从架构图看,android分为四个层,从高层到低层分别是应用程序层.应用程序框架层.系统运行库层和linux核心层.   从技术方面看,An ...

随机推荐

  1. Spring MVC 中文乱码的解决

    对于POST方法提交的中文乱码 , 可在web.xml中添加如下代码 : <filter> <filter-name>encodingFilter</filter-nam ...

  2. 关于微信网页调用js-sdk相关接口注意事项目(一级域名与二级域名互相干扰!!!)

    不知道有没有网友遇到过同一个web应用用不同的域名(一级或二级域名)在两个公众号中调用JSSDK相关接口实现功能, 这种做法本来没有问题,问题在于用二级域名(同属一级域名下的二级域名)绑定另一个web ...

  3. 内联函数inline

    1:使用inline函数的时候,必须使函数体和inline说明结合一起,否则编译器将视他为普通函数处理: false: inline void Coord::setcoord(int a,int b) ...

  4. 配置webstorm使用supervisor时出现 /usr/bin/env: node: 没有那个文件或目录 解决方法

    配置好supervisor路径后 出现了 启动时出现了 /usr/bin/env: node: 没有那个文件或目录 需要讲.nvm下的node链接到, /usr/bin/目录下 sudo ln -s ...

  5. C++学习46 getline()函数读入一行字符 一些与输入有关的istream类成员函数

    getline函数的作用是从输入流中读取一行字符,其用法与带3个参数的get函数类似.即    cin.getline(字符数组(或字符指针), 字符个数n, 终止标志字符) [例13.7] 用get ...

  6. C++学习44 格式化输出,C++输出格式控制

    在输出数据时,为简便起见,往往不指定输出的格式,由系统根据数据的类型采取默认的格式,但有时希望数据按指定的格式输出,如要求以十六进制或八进制形式输出一个 整数,对输出的小数只保留两位小数等.有两种方法 ...

  7. java中的xml与实体类之间的映射

    实体类: package xml; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement public class User ...

  8. Inno Setup执行SQL脚本的方法

    作为和NSIS并立的.两个最流行的免费Windows应用程序安装包制作工具之一,Inno在学习难度上相对要低一些,非常适合对一些简单的桌面程序打包.但对于较复杂的安装过程,或者Web应用程序来说,我个 ...

  9. Inno Setup设置NT服务

    原文地址:http://stackoverflow.com/questions/16922272/unknown-identifier-and-wpselectdir // Variables Glo ...

  10. Grunt 之 使用 JavaScript 语法检查工具 jshint

    前端开发环境准备好了,我们准备开始进行开发. 前端开发的主力语言是 JavaScript,这是一种脚本语言,没有编译器,也就没有了编译器带给我们的语法检查,怎样保证代码的质量呢?jshint 是一个强 ...