谷歌安卓开发指南 谷歌安卓的系统架构

  次阅读 作者:智能小宝 来源:互联网 2016-01-19 11:13 我要评论(0)

安卓操作系统最初由Andy Rubin开发,最初主要支持手机。2005年由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板 电脑及其他领域上。安卓的主要竞争对手是苹果公司的iOS以及RIM的Blackberry OS。2011年第一季度,安卓在全球的市场份额首次超过塞 班系统,跃居全球第一。 2012年2月数据,安卓占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为68.4%。

安卓用甜点作为它们系统版本的代号的命名方法开始于 安卓 1.5 发布的时候。作为每个版本代表的甜点的尺寸越变越大,然后按照26个字母数序: 纸杯蛋糕,甜甜圈,松饼,冻酸奶,姜饼,蜂巢,冰激凌三明治,根据最新消息新一代安卓版本将命名为果冻豆(Jelly Bean)。

架构

谷歌安卓的系统架构和其它操作系统一样,采用了分层的架构。从架构图看,谷歌安卓分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统 运行库层和linux核心层。

谷歌安卓是以Linux为核心的手机操作平台,作为一款开放式的操作系统,随着谷歌安卓的快速发展,如今已允许开发者使用多种编程语言来开发谷歌安 卓应用程序,而不再是以前只能使用Java开发谷歌安卓应用程序的单一局面,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统

在谷歌安卓中,开发者可以使用Java作为编程语言来开发应用程序,也可以通过NDK使用C/C++作为编程语言来开发应用程序,也可使用SL4A 来使用其他各种脚本语言进行编程(如:python、lua、tcl、php等等),还有其他诸如:Qt(qt for 谷歌安卓)、 Mono(mono for 谷歌安卓)等一些著名编程框架也开始支持谷歌安卓编程,甚至通过MonoDroid,开发者还可以使用C#作为编程语言来开 发应用程序。另外,谷歌还在2009年特别发布了针对初学者的谷歌安卓 Simple语言,该语言类似Basic语言。而在网页编程语言方 面,JavaScript,ajax,HTML5,jquery、sencha、dojo、mobl、PhoneGap等等都已经支持谷歌安卓开发。

而在谷歌安卓系统底层方面,谷歌安卓使用C/C++作为开发语言。

应用程序(部分)

早期的谷歌安卓应用程序开发,通常通过谷歌安卓 SDK(谷歌安卓软件开发包)下使用Java作为编程语言来开发应用程序,但通过不同的软件开发 包,则使用的编程语言也不同。

例如开发者可以通过谷歌安卓 NDK(谷歌安卓 Native开发包)使用C语言或者C++语言来作为编程语言开发应用程序。同时谷歌还推出了适合 初学者编程使用的Simple语言,该语言类似微软公司的Visual Basic语言。此外,谷歌公司还推出了Google App Inventor 开发工具,该开发工具可以快速地构建应用程序,方便新手开发者。

Java开发方面

谷歌安卓支持使用Java作为编程语言来开发应用程序,而谷歌安卓的Java开发方面从接口到功能,都有层出不穷的变化。考虑到Java虚拟机的效 率和资源占用,谷歌重新设计了谷歌安卓的Java,以便能提高效率和减少资源占用,因而与J2ME等不同。 谷歌安卓结构其中Activity等同于 J2ME的MIDlet,一个 Activity 类(Class)负责创建视窗(Windows),一个活动中的Activity就是 在 foreground(前景)模式,背景运行的程序叫做Service。两者之间通过由ServiceConnection和AIDL连结,达到复数 程序同时运行效果。如果运行中的 Activity 全部画面被其他 Activity 取代时,该 Activity 便被停止(Stopped),甚 至被系统清除(Kill)。

View等同于J2ME的Displayable,程序人员可以通过 View 类与 XML layout 档将UI放置在视窗上,谷歌安 卓 1.5的版本可以利用 View 打造出所谓的 Widgets,其实Widget只是View的一种,所以可以使用xml来设计 layout,HTC的谷歌安卓 Hero手机即含有大量的widget。至于ViewGroup 是各种layout 的基础抽象类 (abstract class),ViewGroup之内还可以有ViewGroup。View的构造函数不需要再Activity中调用,但是 Displayable的是必须的,在Activity 中,要通过findViewById()来从XML 中取得View,谷歌安卓的View类的显 示很大程度上是从XML中读取的。View 与事件(event)息息相关,两者之间通过Listener 结合在一起,每一个View都可以注册一个 event listener,例如:当View要处理用户触碰(touch)的事件时,就要向谷歌安卓框架注册 View.OnClickListener。另外还有BitMap等同于J2ME的Image。

C/C++开发方面

早期的谷歌安卓开发只支持Java作为编程语言开发应用程序,因而使得其他语言开发者只能望而却步。2010年4月,谷歌正式对开发者发布了谷歌安 卓 NDK,NDK允许开发者使用C/C++作为编程语言来为谷歌安卓开发应用程序,初版的NDK使得开发者看到了C/C++在谷歌安卓开发中的希望。

但是,当前版本的NDK在功能上还有很多局限性:NDK并没有提供对应用程序生命周期的维护;NDK也不提供对谷歌安卓系统中大量系统事件的支持; 对于作为应用程序交互接口的UI API,当前版本的NDK中也没有提供。但是相对于初版的NDK,现在的NDK已经进行了许多重大的功能改进。

由此可见,NDK仍然需要完善和发展,相信未来随着NDK的发展,NDK可以做得更多更好。

中介软件

操作系统与应用程序的沟通桥梁,应用分为两层:函数层(Library)和虚拟机(Virtual Machine)。 Bionic是 谷歌安 卓 改良libc的版本。谷歌安卓 同时包含了Webkit,所谓的Webkit 就是Apple Safari 浏览器背后的引擎。 Surface flinger 是就2D或3D的内容显示到屏幕上。谷歌安卓使用工具链(Toolchain)为Google自制的 Bionic Libc。

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...