Android 架构分析

首先要注意到,Android系统有着极短的开发时间,因此Android在架构上有着四处借鉴的特点。

Android分为四个层,从低到高分别是linux核心层、系统运行库层、应用程序框架层和应用程序层。在最底层,Android使用了Linux内核,从而能够利用起Linux已有的丰富的硬件支持(当然Android由于版权原因在Linux内核之上使用了完全不同的架构,现在已经被从Linux状态树上移出,算是完全脱离正式的Linux系统了)。在Linux内核之上,Android选择使用Java进行各项API的开发,因此制作了适宜移动端使用的Dalvik虚拟机(现在已被更快的ART所取代),从而向上提供系统运行库。再往上则是丰富的应用程序框架层,最上层则是丰富的应用程序;利用Java跨平台的性质,基于Android框架开发的应用程序可以不用编译运行于任何一台安装有android系统的平台,这可以说是Android的精髓所在。

Android 优势分析

系统开源

Android由于最底层使用Linux内核,使用的是GPL许可证,也就意味着相关的代码是必须开源的。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统,随后Google以Apache开源许可证的授权方式(比GPL协议稍严格些),发布了Android的源代码。自此之后,Android的发展可以说是突飞猛进。开源带来的是快速流行的能力与较低的学习成本。一方面,各个手机厂商无需自行开发手机操作系统,因此纷纷采用Android系统,甚至可以按照自己的目的进行深度定制(虽然有时候会负分优化)。另一方面,开源也促进了学习研究社区的迅速兴起,对于开发者来说,相比iOS,开源使得安卓是一个更适合研究与魔改的系统,而不受到不开源系统的限制。

开源带来的一个极大的好处就是手机厂商成本的降低。除却了操作系统开发的高成本,Android厂商的手机价格可以控制在很低的水平;或者在同样价位中相对iOS拥有更高端的硬件配置。因此在中低端市场,安卓有着绝对的统治地位;在高端市场也与iOS有一较之力。可以说是安卓实现了普通消费者也能使用智能机的梦想。

可以看到在Android与iOS两雄相逐的今天,Android在低端市场拥有绝对的统治力

跨平台特性

由于使用Java进行开发,Android继承了Java跨平台的优点。任何Android应用几乎无需任何修改就能运行于所有的Android设备。这允许各个Android厂商可以自行使用各种各样的硬件设备;而且不仅仅局限于手机,平板,手环,甚至电视和各种智能家居都在使用Android。相比起来iOS的封闭性一定程度上使得iOS的使用范围受到局限(当然这可能也是苹果乐于看到的)。

另一方面,跨平台也极大地方便了庞大的应用开发者群体。同样的应用,对不同的设备编写不同的程序是一件及其浪费劳动力的事情,而Android的出现很好地改善了这一情况。Android在系统运行库层实现了一个硬件抽象层,向上对开发者提供了硬件的抽象,从而实现跨平台,向下也极大地方便了Android系统向各式设备的移植。

丰富的应用

操作系统代表着一个完整的生态圈,一个孤零零的系统,即使设计的再好,没有丰富的应用支持,是很难大规模地流行开的。Android由于一开始的大力推广,以及上述几项很适宜流行的特点,使得Android在一开始就吸引了很多开发者,时至今日,Android已经积累了相当多的应用,更多的应用使得Android更加流行,从而吸引更多的开发者开发更多更好的应用,形成一个良性循环。

反例可以举含着金汤匙的Windows Phone,当然,Windows Phone有着各种各样的问题,但与其他领域不同的是,由于上述提到的关于应用的良性\恶性循环的存在,操作系统领域(严格地说是面向大众的操作系统)是很难有很深的细分的,不够流行的系统会缺乏足够优秀的应用,从而加剧开发者与用户的流失。而优质应用对于操作系统有着极为重要的意义。2004年三星拒绝收购面临资金难题的Android团队,于是在被Google收购的Android大型其道之后,与2009年试图挽回颓势,发布了自主研发的Bada系统,然而不到三年三星就终止了Bada的研发;同样的,BlackBerry 10, Tizen还有曾经如日中天的Sybian,这些操作系统败下阵来后,彻底失去了其市场份额。在操作系统的决斗场中,“You win or you die.”

Google强大的技术支持

Google让Android变得越来越强大,进而快速流行。Google丰厚的技术实力,让Android可以迅速用上谷歌地图、Chrome浏览器、Google Now语音命令等优质服务;Google的互联网身份和强大号召力,让Android能在短期内吸引到运营商、制造商和开发者的支持;Google强大的开发能力也保证了Android有着持续有效的产品迭代,使其不断完善。
可惜由于Google退出中国市场的决策,中国的用户并不能享受到Google提供的很多优质服务,也算是一大憾事。

Android 存在的问题

跨平台一定程度上牺牲了性能(正在改善)

由于使用虚拟机技术,Android在性能上是有一些劣势的。在很长一段时间Android使用自主研发的Dalvik虚拟机提供应用程序框架支持并运行各种应用程序。在以前的Android系统上,所有的应用程序都是运行在Dalvik中。虽说优点在于这种机制可以让各种各样的应用程序运行在多种硬件架构上,但应用程序每次运行时其中一部分代码都要需要机器重新编译。这个过程即消耗时间又要消耗系统资源,所以执行效率难免会降低。

同时,由于Android支持各种不同的硬件,与环境单一的iOS比起来,兼容性会带来性能的牺牲。由于版权问题,很多硬件的驱动并没有放在linux内核层而是放在了用户态,这也一定程度上牺牲了性能。

然而Android的运行性能正在得到逐步改善。从Android 5.0开始Dalvik虚拟机将会被彻底废弃,改为使用ART运行环境。相比Dalvik,ART的处理机制完全不同,它会在应用程序安装时就把程序代码转换成机器语言,让程序成为真正的本地应用。这样做的好处是程序的启动时间被极大的提高,运行速度也会更快。电量消耗的更少,系统行也跟着更加流畅。我们也期待未来Android还会有进一步的优化。

应用水平安全性有待

由于在推广早起致力于Android的迅速流行,Android应用的编写的门槛被降得很低,权限管理方面的机制很不完善,这就导致Android系统的安全性常被人诟病。iOS由于系统有着极其严格的权限管理,加上Apple Store对发布的应用的审查(未越狱的iOS手机不能安装未经Apple Store审查发布的应用),其安全性往往能够得到很好的保障。而在国内Google Store的缺失,导致Android用户不得不安装各种渠道的应用,从而带来较大的安全隐患。

然而这种安全性的评判也是不完全准确的。一个足够水平的应用开发者是有能力开发出在安全性上足够合格的Android应用的。另一方面大部分国产Android手机厂商也致力于搭建自己的应用生态圈,如华为,小米等。(虽然很多应用良心程度不敢恭维)。

 总结

总的说来,Android是拥有很多优点,被广泛使用的一款操作系统。在Android与iOS两雄逐鹿的今天,Android可以说是对抗苹果iOS垄断的唯一系统。虽然Android仍然存在一些问题,但它的发展前景是绝对值的相信的。

参考资料:

1、 2016手机市场深度报告 - 站长之家
http://www.chinaz.com/mobile/2016/0705/547754.shtml

2、Android的历史与花边 - Vamei - 博客园
http://www.cnblogs.com/vamei/p/3726620.html

3、ART登场,Android要和核心虚拟机Dalvik说再见了 | PingWest品玩
http://www.pingwest.com/google-art-dalvik/

4、ART and Dalvik | Android Open Source Project
https://source.android.com/devices/tech/dalvik/

更多相关文章

  1. 箭头函数的基础使用
  2. NPM 和webpack 的基础使用
  3. Python list sort方法的具体使用
  4. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  5. Chronometer android计时器组件Chronometer的使用,android通话时
  6. Android跨平台应用开发
  7. Android(安卓)API Guides---USB Host and Accessory
  8. Android(安卓)SDK开发Android应用
  9. 10个经典的Android开源应用项目

随机推荐

  1. ANDROID Installation error: INSTALL_FA
  2. Android(安卓)Studio 单元测试
  3. mac下搭建android sdk
  4. Webkit for Android分析
  5. Android(安卓)Studio/IntelliJIDEA 快捷
  6. 设计师 DPI 参考指南
  7. Android(安卓)3d 球形建模
  8. 使用PreferenceActivity设置应用程序参数
  9. Android有效解决加载大图片时内存溢出的
  10. Android布局和intent实例