赞
踩
Android这一词最先出现在法国作家利尔亚当在1886年发表的科幻小说《未来夏娃》中,作者将外表像人类的机器起名为Android,这也就是Android小人名字的由来。Android是基于Linux系统的开源操作系统,是由Andy Rubin于2003年10月在美国加州创建,2005年8月17日,Google低调收购了成立仅22个月的高科技企业Android及其团队。Andy Rubin成为Google公司工程部副总裁,继续负责Android项目。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。2008年的时候发布了第一部Android智能手机,随后Android不断发展更新,占据了全球大部分的手机市场。
既然Android是基于Linux开发的操作系统,那么是不是可以理解成Android是Linux一个发行版本,就像Centos,RedHat,Ubuntu一样是众多Linux发行版本中的一个。如果是这样,那么同为Linux发行版的Centos,Ubuntu等为什么没能成为移动端的操作系统,而Android却如此受人青睐。最后一个问题,Android是基于Linux的操作系统,为什么没有人用C/C++写应用运行于Android之上,而是写Java应用。要想得到这个问题的答案,我们要先弄清楚几个概念。
Linux 与 Linux 内核其实不太一样的,Linux 的内核是操作系统的核心,包括设备驱动、文件系统、进程管理、网络通信等。但是操作系统光有内核,用户是没有办法操作的,所以很多厂商在Linux 社区就在内核之上开发了很多工具,比如我们常用的 GNome桌面,FireFox浏览器、GIMP 图片编辑器等等。Linux 内核和这些应用一起打包后就被称作 Linux 发行版本。Linux 有很多的发行版本,例如RedHat,CentOS等等。
所以我们常说的 Linux 有两个含义
Android实际上用到的是 Linux 的内核。因为 Linux 本身是开源的,所以谷歌的工程师们选择了在 Linux 内核基础之上做裁剪定制,这样他们就不需要从头开始来开发一个全新的系统。使用Linux内核、包含一套开发框架、各种运行库(Media、SQLite、 OpenGL ES等)、Dalvik虚拟机,提供了Android SDK,包含丰富的工具集(有调试器、库、手机仿真器、文档、示例代码和教程),还有Android Development Tools(ADT)
Android操作系统的架构
从上图中可以清楚的看出
说了这么多对安卓系统有了一定了解后,对于安卓和Linux的区别就好理解了,直接上图
Linux 内核是用 C语言开发的,安卓在 Linux 的内核之上用 C/C++ 开发了Dalvik ,后来改叫 Android Run Time,其实本身就是安卓的 Java 虚拟机。我们做的安卓应用都要用 Java开发,运行在 ART 上面。Linux 其他发行版本也可以用 Java 开发应用,只要运行在 Linux 的 Java 虚拟机上就可以了。除此之外我们也可以在 Linux 内核之上使用其他框架开发,比如 GTK 框架的 Gnome、QT 框架的 LXQT,这些跟 ART 都是一个层次的东西。所以我觉得安卓和其他 Linux 发行版本本质上没有太大区别,只不过安卓对 Linux 的内核做了一些裁减,并且在上面跑了一个 Dalvik / ART,而其他 Linux 发行版本跑了很多个 “Dalvik / ART”而已。
安卓系统上可以直接运行C/C++写的App吗?
可以的,实际上这个问题有点蠢,因为决定程序能不能运行不是由它的开发语言决定的,任何语言最终都会被编译成二进制代码,所以只要编译器能编译成相关CPU和操作系统支持的代码,那么就可以在安卓上直接跑C写的App。所以也可以用C/C++开发App。
既然安卓是Linux内核,那么可以在Linux 桌面上运行安卓的应用吗?
因为其他 Linux 发行版本也没有 Dalvik / ART,所以安卓的应用在 Linux 桌面上不能直接运行。不过我们只需要将 Dalvik / ART 移植到 Linux 桌面环境就可以了,只不过有些功能硬件不支持,例如通话功能,照相机功能等。正是基于这个原理,市场上有很多安卓手机模拟器,不仅可以用在 Linux 桌面,还可以用在 Windows 以及 Mac 上。
安卓的操作系统核心是在 Linux 内核上做了一些裁减和定制,并且在内核之上运行了一个 Dalvik / ART 虚拟机,所有的应用必须运行在这个虚拟机上,所以安卓的应用都是用 Java 来开发的。在 Linux 的发行版本中,我们可以使用 Java 虚拟机,也可以使用其他框架,比如 GTK, QT等等,它们编译出来的二进制代码可以直接运行在 Linux 内核上,它们和 Dalvik / ART 是一个层次上的东西,所以安卓和 Linux 的发行版本本质上是一样的。
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。