android系统架构
‘壹’ 华为麒麟OS还是基于Android系统架构吗
早在2012年,路透社就报道称华为正在着手研发自己的手机操作系统,以减少他们对其他公司的依赖,提供一个可替代计划。不过有分析人士认为,考虑到应用支持方面的问题,麒麟OS预计还会基于Android系统架构研发,但会加入更多华为的特色服务和功能。
‘贰’ android系统的系统架构
架构详解
linux Kernel
Android基于Linux kernel 提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。Linux Kernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。 如果你学过计算机网络知道OSI/RM,就会知道分层的好处就是使用下层提供的服务而为上层提供统一的服务,屏蔽本层及以下层的差异,当本层及以下层发生了变化不会影响到上层。也就是说各层各尽其职,各层提供固定的SAP(ServiceAccess Point),专业点可以说是高内聚、低耦合。如果你只是做应用开发,就不需要深入了解Linux Kernel层。
Android Runtime
Android包含一个核心库的集合,提供大部分在java编程语言核心类库中可用的功能。每一个Android应用程序是Dalvik虚拟机中的实例,运行在他们自己的进程中。Dalvik虚拟机设计成,在一个设备可以高效地运行多个虚拟机。Dalvik虚拟机可执行文件格式是.dex,dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。 大多数虚拟机包括JVM都是基于栈的,而Dalvik虚拟机则是基于寄存器的。两种架构各有优劣,一般而言,基于栈的机器需要更多指令,而基于寄存器的机器指令更大。dx 是一套工具,可以将 Java .class 转换成 .dex 格式。一个dex文件通常会有多个.class。由于dex有时必须进行最佳化,会使文件大小增加1-4倍,以ODEX结尾。 Dalvik虚拟机依赖于Linux 内核提供基本功能,如线程和底层内存管理。
Library
Android包含一个C/C++库的集合,供Android系统的各个组件使用。这些功能通过Android的应用程序框架(application framework)暴露给开发者。下面列出一些核心库:系统C库——标准C系统库(libc)的BSD衍生,调整为基于嵌入式Linux设备媒体库——基于PacketVideo的OpenCORE。这些库支持播放和录制许多流行的音频和视频格式,以及静态图像文件,包括MPEG4、 H.264、MP3、 AAC、AMR、JPG、 PNG界面管理——管理访问显示子系统和无缝组合多个应用程序的二维和三维图形层LibWebCore——新式的Web浏览器引擎,驱动Android 浏览器和内嵌的web视图SGL——基本的2D图形引擎3D库——基于OpenGL ES 1.0 APIs的实现。库使用硬件3D加速或包含高度优化的3D软件光栅FreeType——位图和矢量字体渲染SQLite——所有应用程序都可以使用的强大而轻量级的关系数据库引擎
Application Framework
通过提供开放的开发平台,Android使开发者能够编制极其丰富和新颖的应用程序。开发者可以自由地利用设备硬件优势、访问位置信息、运行后台服务、设置闹钟、向状态栏添加通知等等,很多很多。 开发者可以完全使用核心应用程序所使用的框架APIs。应用程序的体系结构旨在简化组件的重用,任何应用程序都能发布他的功能且任何其他应用程序可以使用这些功能(需要服从框架执行的安全限制)。这一机制允许用户替换组件。 所有的应用程序其实是一组服务和系统,包括:视图(View)——丰富的、可扩展的视图集合,可用于构建一个应用程序。包括包括列表、网格、文本框、按钮,甚至是内嵌的网页浏览器内容提供者(Content Providers)——使应用程序能访问其他应用程序(如通讯录)的数据,或共享自己的数据资源管理器(Resource Manager)——提供访问非代码资源,如本地化字符串、图形和布局文件通知管理器(Notification Manager)——使所有的应用程序能够在状态栏显示自定义警告活动管理器(Activity Manager)——管理应用程序生命周期,提供通用的导航回退功能
Application
Android装配一个核心应用程序集合,包括电子邮件客户端、SMS程序、日历、地图、浏览器、联系人和其他设置。所有应用程序都是用Java编程语言写的。更加丰富的应用程序有待我们去开发! 从上面我们知道Android的架构是分层的,非常清晰,分工很明确。Android本身是一套软件堆叠(Software Stack),或称为“软件叠层架构”,叠层主要分成三层:操作系统、中间件、应用程序。从上面我们也看到了开源的力量,一个个熟悉的开源软件在这里贡献了自己的一份力量。
‘叁’ Android系统层次结构是怎样的
由下往上:linux内核,库与运行环境,应用框架,应用层
‘肆’ 有哪些关于 Android 系统架构,底层实现方面的技术书推荐
深入浅出 Android – Google 手持设备应用程序设计 入门书籍,作者写的很不错,可以在阅读 SDK 的同时阅读这本书,中间的一些使 用介绍的非常清楚,最重要的是中文版的 Google Android 应用框架原理与程式设计 36 技 最早介绍 Android 的中文书籍,台湾人写的繁体版的,看得有些影响,不过还是值 得耐心阅读的 Android A Programmer’s Guide 多个专家写的介绍 Android 的书籍, 内容写的很不错, Ask the Expert 部分针对一些 问题作了详细的说明 Android Essentials 对 Android 介绍的比较全面,从安装到开发,应该有新版本了。 Google Android SDK 开发范例大全 ( 第 2 版 ) 以 Android 手机应用程序开发(采用 AndroidSDK2.1 )为主题,通过 160 多个范例 全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计功力 提供了很大的帮助。 Google Android 开发入门与实战 内容上覆盖了用 Android 开发的大部分场景,从 Android 基础介绍、环境搭建、 SD K 介绍、 Market 使用,到应用剖析、组件介绍、实例演示等方面。从技术实现上, 讲解了 5 个 Android 平台下的完整综合实例及源代码分析,分别是 RSS 阅读器、基 于 Google Map 的个人 GPS 、豆瓣网( Web 2.0 )客户端、在线音乐播放器、手机信 息助手,为初学者学习与实践结合提供了很好的指导。 Android 平台开发之旅 涵盖了 Android 平台 1.5 到 2.2 版本的主要功能特性,立足实际的开发案例, 介绍了 Android 手机平台开发的基础概念、 实用技术和应用模式。 主要内容包括: 平台基础、 开发环境搭建、程序框架、高级界面和底层界面设计、文件系统管理、网络通信、 无线通信、多媒体编程、个人信息管理、电话系统、数据库应用、 XML 应用和地图 应用。开发实例多达 120 例。 如何成为 Android 高手 成为一名真正的 Android 高手必须掌握和遵循的一些准则: 1 ,学会懒惰 2 ,精通 Android 体系架构、 MVC 、常见的设计模式、控制反转( IoC ) 3 ,编写可重用、可扩展、可维护、灵活性高的代码 4 ,高效的编写高效的代码 5 ,学会至少一门服务器端开发技术 Android 开发指南中文版之应用程序框架 Android SDK1.5 版的英文开发资料 Android Development Guide 中应用程序框架部 分的翻译 PDF 文
‘伍’ Android的系统架构包括哪些部分
Android一词的本义指“机器人”,最初的Android主要支持手机,后来经过开发改良,逐渐扩展到平板电脑及其他一些领域上,是首个为移动终端打造的真正的开放和完整的移动软件。
Android的系统架构和其操作系统一样,采用了分层的架构。Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。
一、应用程序
Android会同一系列核心应用程序包一起发布,该应用程序包包括客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。
二、应用程序框架
开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。
三、系统运行库
Android 包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。
四、Linux内核层
Android内核是基于Linux 内核的修改的内核版本,它提供了用于支持Android平台的设备驱动。
‘陆’ 什么是android系统,android的发展以及android的平台架构和特性
Android平台采用了整合的策略思想,包括底层Linux操作系统、中间层的中间件和上层的Java应用程序。下面我把Android的特性及其架构体系结构总结一下。
一、Android的平台特性
Android平台有如下特性:
1. 应用程序框架支持组件的重用与替换。
这样我们可以把系统中不喜欢的应用程序删除,安装我们喜欢的应用程序。
2. Dalvik虚拟机专门为移动设备进行了优化。
Android应用程序将由Java编写、编译的类文件通过DX工具转换成一种后缀名为.dex的文件来执行。Dalvik虚拟机是基于寄存器的,相对于Java虚拟机速度要快很多。
3. 内部集成浏览器基于开源的WebKit引擎。
有了内置的浏览器,这将意味着WAP应用的时代即将结束,真正的移动互联网时代已经来临,手机就是一台“小电脑”,可以在网上随意遨游。
4. 优化的图形库包括2D和3D图形库,3D图形库基于OpenGL ES 1.0。
强大的图形库给游戏开发带来福音。在3G最为重要的的应用莫过于手机上网和手机游戏。
5. SQLite用作结构化的数据存储。
6. 多媒体支持包括常见的音频、视频和静态印象文件格式
如MPEG4、H.264、MP3、AAC、AMR、JGP、PNG、GIF。
7. GSM电话(依赖于硬件)。
8. 蓝牙(Bluetooth)、EDGE、3G、WiFi(依赖于硬件)。
9. 照相机、GPS、指南针和加速度计(依赖于硬件)。
10. 丰富的开发环境包括设备模拟器、调试工具、内存及性能分析图表和Eclipse集成的开发环境插件。
Google提供了Android开发包SDK,其中包含了大量的类库和开发工具,并且针对Eclipse的可视化开发插件ADT。
二、Android平台架构
从上图我们可以看出,Android操作系统的体系结构可分为4层,由上到下依次是应用程序、应用程序框架、核心类库和Linux内核,其中第三层还包括Android运行时的环境。下面分别来讲解各个部分。
1. 程序应用
Android
连同一个核心应用程序包一起发布,该应用程序包包括E-mail客户端、SMS短消息程序、日历、地图、浏览器、联系人管理程序等。所有的应用程序都是用Java编写的。
2. 应用程序框架
开发者完全可以访问核心应用程序所使用的API框架。该应用程序框架架构用来简化组件软件的重用,任何一个应用程序都可以发布它的功能块并且任何其他的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。该应用程序重用机制使得组件可以被用户替换。
以下所有的应用程序都由一系列的服务和系统组成,包括:
1)一个可扩展的视图(Views)可以用来创建应用程序,包括列表(lists)、网络(grids)、文本框(text
boxes)、按钮(buttons),甚至是一个可嵌入的Web浏览器。
2)内容管理器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据。
3)一个资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串、图形和分层文件(layout files)。
4)一个通知管理器(Notification Manager)使得应用程序可以在状态栏中显示客户通知信息。
5)一个活动类管理器(Activity Manager)用来管理应用程序生命周期并提供常用的导航回退功能。
3. Android程序库
Android包括一个被Android系统中各种不同组件所使用的C/C++集库。该库通过Android应用程序框架为开发者提供服务。
以下是一些主要的核心库:
1)系统C库:一个从BSD继承来的标准C系统函数库(libc),专门为基于Embedded Linux的设备定制。
2)媒体库:基于PacketVideo
OpenCORE;该库支持录放,并且可以录制许多流行的音频视频格式,还有静态映像文件包括MPEG4、H.264、MP3、AAC、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:位图(bitmap)和向量(vector)字体显示。
8)SQLite:一个对于所以应用程序可用、功能强劲的轻型关系型数据库引擎。
4. Android运行库
Android包括了一个核心库,该核心库提供了Java编程语言核心库的大多数功能。
每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik是针对同时高效地运行多个VMs实现的。Dalvik虚拟机执行.dex的Dalvik可执行文件,该格式文件针对最小内存使用做了优化。该虚拟机是基于寄存器的,所有的类都是经由Java汇编器编译,然后通过SDK中的DX工具转化成.dex格式由虚拟机执行。
Dalvik虚拟机依赖于Linux的一些功能,比如线程机制和底层内存管理机制。
5. Linux内核
Android的核心系统服务依赖于Linux内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux内核也同时作为硬件和软件栈之间的硬件抽象层。
‘柒’ android开发的系统架构
Android以Java为编程语言,使接口到功能,都有层出不穷的变化,其中Activity等同于J2ME的MIDlet,一个 Activity 类(class)负责创建视窗(window),一个活动中的Activity就是在 foreground(前景)模式,背景运行的程序叫做Service。两者之间通过由ServiceConnection和AIDL连结,达到复数程序同时运行的效果。如果运行中的 Activity 全部画面被其他 Activity 取代时,该 Activity 便被停止(stopped),甚至被系统清除(kill)。
View等同于J2ME的Displayable,程序人员可以通过 View 类与“XML layout”档将UI放置在视窗上,Android 1.5的版本可以利用 View 打造出所谓的 Widgets,其实Widget只是View的一种,所以可以使用xml来设计layout,HTC的Android Hero手机即含有大量的widget。至于ViewGroup 是各种layout 的基础抽象类(abstract class),ViewGroup之内还可以有ViewGroup。View的构造函数不需要再Activity中调用,但是Displayable的是必须的,在Activity 中,要通过findViewById()来从XML 中取得View,Android的View类的显示很大程度上是从XML中读取的。View 与事件(event)息息相关,两者之间通过Listener 结合在一起,每一个View都可以注册一个event listener,例如:当View要处理用户触碰(touch)的事件时,就要向Android框架注册View.OnClickListener。另外还有Image等同于J2ME的BitMap。 操作系统与应用程序的沟通桥梁,并用分为两层:函数层(Library)和虚拟机(Virtual Machine)。 Bionic是 Android 改良libc的版本。Android 同时包含了Webkit,所谓的Webkit 就是Apple Safari浏览器背后的引擎。Surface flinger 是就2D或3D的内容显示到屏幕上。Android使用工具链(Toolchain)为Google自制的Bionic Libc。
Android采用OpenCORE作为基础多媒体框架。OpenCORE可分7大块:PVPlayer、PVAuthor、Codec、PacketVideo Multimedia Framework(PVMF)、Operating System Compatibility Library(OSCL)、Common、OpenMAX。
Android 使用skia 为核心图形引擎,搭配OpenGL/ES。skia与Linux Cairo功能相当,但相较于Linux Cairo, skia 功能还只是阳春型的。2005年Skia公司被Google收购,2007年初,Skia GL源码被公开,目前Skia 也是Google Chrome 的图形引擎。
Android的多媒体数据库采用SQLite数据库系统。数据库又分为共用数据库及私用数据库。用户可通过ContentResolver类(Column)取得共用数据库。
Android的中间层多以Java 实现,并且采用特殊的Dalvik虚拟机(Dalvik Virtual Machine)。Dalvik虚拟机是一种“暂存器型态”(Register Based)的Java虚拟机,变量皆存放于暂存器中,虚拟机的指令相对减少。
Dalvik虚拟机可以有多个实例(instance), 每个Android应用程序都用一个自属的Dalvik虚拟机来运行,让系统在运行程序时可达到优化。Dalvik虚拟机并非运行Java字节码(Bytecode),而是运行一种称为.dex格式的文件。 Android 的 HAL(硬件抽像层)是能以封闭源码形式提供硬件驱动模块。HAL 的目的是为了把 Android framework 与 Linux kernel 隔开,让 Android 不至过度依赖 Linux kernel,以达成 kernel independent 的概念,也让 Android framework 的开发能在不考量驱动程序实现的前提下进行发展。
HAL stub 是一种代理人(proxy)的概念,stub 是以 *.so 档的形式存在。Stub 向 HAL“提供”操作函数(operations),并由 Android runtime 向 HAL 取得 stub 的 operations,再 callback 这些操作函数。HAL 里包含了许多的 stub(代理人)。Runtime 只要说明“类型”,即 mole ID,就可以取得操作函数。 Android 是运行于 Linux kernel之上,但并不是GNU/Linux。因为在一般GNU/Linux 里支持的功能,Android 大都没有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic 取代Glibc、以Skia 取代Cairo、再以opencore 取代FFmpeg 等等。Android 为了达到商业应用,必须移除被GNU GPL授权证所约束的部份,例如Android将驱动程序移到 userspace,使得Linux driver 与 Linux kernel彻底分开。bionic/libc/kernel/ 并非标准的kernel header files。Android 的 kernel header 是利用工具由 Linux kernel header 所产生的,这样做是为了保留常数、数据结构与宏。
目前Android 的 Linux kernel控制包括安全(Security),存储器管理(Memory Managemeat),程序管理(Process Management),网络堆栈(Network Stack),驱动程序模型(Driver Model)等。下载Android源码之前,先要安装其构建工具Repo来初始化源码。Repo 是 Android 用来辅助Git工作的一个工具。
‘捌’ 华为麒麟OS还是基于Android系统架构吗
是的,华为麒麟OS是基于Android系统架构的。
EMUI 6.0基于Android8.0开发,这款全新的系统在经过重新设计之后,更加简洁、易操作。消息称,该系统邀请了前诺基亚前工程师加入,经过华为三年潜心研发而成。系统还是会基于安卓构架,但是加入了更多华为的特色和服务,与芯片封装就是是系统的特色之一。
(8)android系统架构扩展阅读:
鸿蒙OS将微内核技术应用于可信执行环境(TEE),通过形式化方法,重塑可信安全。
通过统一IDE支撑一次开发,多端部署,实现跨终端生态共享。鸿蒙OS凭借多终端开发IDE,多语言统一编译,分布式架构Kit提供屏幕布局控件以及交互的自动适配。
支持控件拖拽,面向预览的可视化编程,从而使开发者可以基于同一工程高效构建多端自动运行App,实现真正的一次开发,多端部署,在跨设备之间实现共享生态。
参考资料来源:手机中国-华为EMUI 6.0曝光:基于Android
‘玖’ android的系统架构
Android的系统架构和其操作系统一样,采用了分层的架构。从架构图看,Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。
应用程序
Android会同一系列核心应用程序包一起发布,该应用程序包包括客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。
应用程序框架
开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。
隐藏在每个应用后面的是一系列的服务和系统, 其中包括;
丰富而又可扩展的视图(Views),可以用来构建应用程序, 它包括列表(Lists),网格(Grids),文本框(Text boxes),按钮(Buttons), 甚至可嵌入的web浏览器。
内容提供器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据
资源管理器(Resource Manager)提供 非代码资源的访问,如本地字符串,图形,和布局文件(Layout files )。
通知管理器 (Notification Manager) 使得应用程序可以在状态栏中显示自定义的提示信息。
活动管理器( Activity Manager) 用来管理应用程序生命周期并提供常用的导航回退功能。
系统运行库
Android 包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。以下是一些核心库:
* 系统 C 库 - 一个从BSD继承来的标准C系统函数库 Libc ), 它是专门为基于Embedded linux的设备定制的。
* 媒体库 - 基于PacketVideo OpenCORE;该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。
* Surface Manager - 对显示子系统的管理,并且为多个应用程序提 供了2D和3D图层的无缝融合。
* LibWebCore - 一个最新的web浏览器引擎用,支持Android浏览器和一个可嵌入的web视图。
‘拾’ 一般的android开发都用到了系统架构哪些层
1:android分为四个层,从高层到低层分别是应用程序层、应用程序框架层
开发一个程序,android系统框架是层层相扣,不能分开的。 应用程序层: 这个层主要指的就是用java语言编写的运行在虚拟机上的程序,Google在最开始时就 在android系统中捆绑了一些核心的应用(核心应用的编写必须使用应用层序框架层的API框架.
2:android 开发框架有四个层,从高层到低层分别是应用程序层、应用程序框架层
android应用开发框架是 Application Framework. 其系统架构由5部分组成,分别是:Linux Kernel、Android Runtime、Libraries、Application Framework、Applications。