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 操作系统的体系结构

  从上图我们可以看出,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内核也同时作为硬件和软件栈之间的硬件抽象层。

相关文档:Google工程师多图详解Android架构


安卓操作系统有什特点?

  Android的系统架构和其它操作系统一样,采用了分层的架构。android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。
  Android是以Linux为核心的手机操作平台,作为一款开放式的操作系统,随着Android的快速发展,如今已允许开发者使用多种编程语言来开发Android应用程序,而不再是以前只能使用Java开发Android应用程序的单一局面,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统。
  在Android中,开发者可以使用Java作为编程语言来开发应用程序,也可以通过NDK使用C/C++作为编程语言来开发应用程序,也可使用SL4A来使用其他各种脚本语言进行编程(如:python、lua、tcl、php等等),还有其他诸如:Qt(qt for android)、Mono(mono for android)等一些著名编程框架也开始支持Android编程,甚至通过MonoDroid,开发者还可以使用C#作为编程语言来开发应用程序。另外,谷歌还在2009年特别发布了针对初学者的Android Simple语言,该语言类似Basic语言。而在网页编程语言方面,JavaScript,ajax,HTML5,jquery、sencha、dojo、mobl、PhoneGap等等都已经支持Android开发。
  而在Android系统底层方面,Android使用C/C++作为开发语言。
 

Android架构设计的思想与原则是什?

rlei分析了Android的设计哲学:
理解好Intent,就可以理解Android哲学(所有应用生来平等)的一部分。举个简单的例子,iOS里面应用要集成SNS如facebook/twitter/sina weibo等,都需要应用自己实现(iOS5也只是集成twitter一家);Android上只需要广播一个share内容的intent。从理解Intent如何工作开始,你就在慢慢理解Activity Manager, Package Manager, Services这些Android的重要组件是如何工作的。
另外Binder是Android架构里非常核心的一块。Android基于Intent的消息传递和组件/应用解耦,下面的基础都是Binder IPC。在这一点上,Android实际上是光荣的传承了BeOS和Palm OS 6(悲催的OS6...)未能发扬光大的一部分。
MVC(Content Provider, Activity, Layout, Adapters)这个比较基础,也不算Android特有的。
Content Provider对数据访问的抽象也是比较有意思的一块。理想情况下,content provider可以让客户端用URI以语义化的方式访问数据(URI本身即表示数据层次结构和查询条件),而下面数据库表的结构可以任意变动,不影响客户端代码。当然实做的时候content provider还是会被各种复杂的where子句暴露出SQL的实现细节
至于Android的权限管理,其实比较简单,主要是利用现成的Linux安全模型,进程之间相互隔离。API级别的权限管理和JVM类似。
Billy Cui重点解析了权限系统的设计:
Android的权限系统是基于Linux,但又增加了很多自己的控制模块。
总体上来说,其分为以下几部分权限系统:
1. userid : 继承于linux,对于多个app,通过shareuid的方式可以使用同一个userid,主要承担一些目录访问权限之类的工作,比如私有目录只能由同一uid应用访问。
2. 安装level:system level or app level,这个是根据应用的安装位置决定的,在system/app下安装的应用就是system level,在权限访问中会得到更多的权限,比如静默安装应用的权限等。
3. permission : 这个是最主要的权限控制,一般开发者开发应用主要是接触这个部分,在这部分中,会根据应用在AndroidManifest.xml中声明的use-permission而在访问相应api或资源时判断其是否有访问权限,比如常用的android.permission.INTERNET等。
4. signature: 签名,是Android权限系统中的重要组成部分,对于系统签名的应用,会有一些特殊的功能,而shareuid等特性也是需要同一签名作为基础。此外,permission在设置/自定义其权限时也经常会使用到签名,比如控制只有我自己的应用才可以访问我自己定义的公开API。
除此以外,其实Android在uid的里面设置了一些预定义有特殊功能的uid,比如system/media等,在配置其system level的services的时候会用到。


  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android平台是一个开放且智能化的移动设备操作系统,它的主要特性通过设备来体现。首先,设备特性使得Android平台具备了广泛的硬件兼容性。不同厂商和型号的Android设备都可以在同一平台上运行,并且Android设备的种类繁多,涵盖了智能手机、平板电脑、电视、手表等多种类型。这种多样性在市场上提供了更多的选择和自由,使用户可以根据自己的需求和喜好选择不同款式的设备。 其次,设备特性赋予了Android平台良好的扩展性和可定制性。Android设备可以通过各种方式进行扩展,比如添加外部存储设备、蓝牙设备和其他外设等。用户还可以根据自己的需求自定义和配置Android设备的各种设置,比如壁纸、主题、桌面布局等。这使得Android设备能够适应不同用户和不同场景的需求,提供个性化的用户体验。 此外,设备特性使得Android平台能够支持多任务处理和多窗口显示。Android设备可以同时运行多个应用程序,并在屏幕上同时显示多个应用程序的内容。这样可以提高用户的工作效率和使用便捷性,使用户能够进行多个任务的切换和同时处理多个任务。 最后,设备特性使得Android平台拥有强大的通信和互联网功能。Android设备可以通过各种通信方式进行互联网连接,比如Wi-Fi、蜂窝网络和蓝牙等。用户可以随时随地通过Android设备进行通话、发送短信、浏览网页、使用社交媒体等。这为用户提供了便利的网络体验和更广泛的交流平台。 总而言之,Android平台通过设备的特性为用户提供了广泛的选择、扩展性、可定制性、多任务处理和通信功能。这些特性Android平台打造成为一个开放、灵活和强大的移动设备操作系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值