安卓到底是不是Linux

安卓到底是不是Linux

有人说安卓就是 Linux,也有人说安卓是安卓、Linux 是 Linux,两者没什么关系,还有人说安卓用的是 Linux 的内核,那i ? i 6 ) T么它们之间到底是什么关系呢。要想i r B得到这个问题的答案,我们要先弄清楚几个概念。

Linux 与 Linux 内核
Linux 与 Linux 内核其实是不一样的,关于这个问题,我在之前的一篇文章中讲过(《Linux,Unix,GNU 到底有什么样的渊源?》)。Linux 的内核是由Linus Torvalds 在1991q ~ 年首次编写。它是操作系统的核心,包括设备驱动、文件系统、进程管理、网$ G J / u ~络通信等。但~ a % B p操作系统光有内核,用户是没有办法操作{ p ; *的,所以很多厂商和 Linux 社区就在内核之上开发8 8 R了很多工具,比如我们常用的_ | & } / GNome桌面,FireFox浏览器、GIMP 图片编辑器等等。Linux 内核和这些应用一起打包后就被称作 Linux 发行版本。Linux 有很多的发行版本,我在之前的文章中(《这么多Linux版本,你究竟该怎么选择?》),对不同的版本做过比较。

所以我们常说的 Linux 有两个含义:

1) Linux 内核,这个严格来说应该U ) j m h 5 ]叫 GNU/Linux,因为它是 GNU 计划的一部分

2) Linux 发行版本,比如 Debian、Ubuntu、Mint、RedHat等等

那么安卓和 Linux 内核或者 Linux 发行版本有什么关系吗?

安卓与 Linux 的关系
安卓实际上用到的是 Linux 的内核。因为 Linux 本身是开源的,所以谷歌的工程师们选择了在 Li S z O W 8 / c pnux 内核* z ? t G ! @基础4 w X l 2 7之上做裁剪定制,这样他们就不需要从头开始来开发一个全新的系统。BTW,这在大厂当中也是一种比较常用的做法,比如 Playstation 的操作系统用的是 FreeBSD的内核,XBox 用的是 Windows NT 的内核。在安@ x + Q { S N卓的手机上,在系统信息中你可以看到 Linux 内核 5 R G % 9 b的版本。

既然安卓用的是 LiW m g } 8 B U Wnuq { G D d u Sx 的内D 6 = m 6 v n k m核,那是不是可以说它就是 Linux的一个发行版本呢?先看一下安卓和其他O s B Linux 发行版本开发架构上有何不同。

大家都知道u j # J , Linux 内核是用 C语` r I 8 p * !言开发的,安卓在 Linux 的内核之上用 C/C++ 开发了Dalvik ,后来改叫 Android Run Time,其实本身就是安卓的 Java 虚拟机。我们做的安卓应用都要用 Java开发,运行在 ART 上面。Linux 其他发行版本也可以用 Java 开发应用,只要运行在 Linux 的 Java 虚拟机上就可o ! d以了。除此之外我们也可以在 LinuxT ; ^ s i f 内核之上使用其e & s他框架开发,比如 GTK 框架的 Gnome、QT 框架的 LXQT,这些跟 ART 都是一个层次的东西。所以我觉得安卓和其他 Linux 发行版本本质上没有太大区别,只不过安卓对 LinuE A ) S z m Ux 的内核做了一些裁减,并且在上面跑了一个 Dalvik / ART,而其他 Linux 发行版本跑了很^ S d多个 “Dalvik / ART”而已。

解释清楚了安卓与 Linux 内核的关系以及与2 i Z Linux = % C / q Ix 其他发行版本的区别后,我们再来看下3 U Z Q 8小伙伴们经常问到的两个问题:

1) 可以在安卓上运行 Linux 的桌面应用吗?

因为安卓有很多标准的 GNU 库没有安装,也没有安装图形 X server,所以答案是不能。不过有一些应用尝试让& @ G我们在安卓环b : p W 3 E境中使用 Shell,安卓终端模拟器还有busybox,感兴5 5 ? ,趣的同学可以去了解一下。

2) 可以在Linux 桌面上运行安卓的应用吗?

因为其他 LK C Y p - *inux 发行版本也没有 Dalvik / ART,所以安卓的应用在 Linux 桌面上不能直接运行。不过我们只需要将 Dalvik / ART 移植到 Linux 桌面环境就可以了。正是基于这个原理,市场上有很多安卓手机模拟器,不仅可以用在 Linux 桌面,还可以用在 Windows 以及 Mac 上。

总结
安卓的操作系统核心是在 Linux 内核上做了一些裁减和定制,并且在内核之上运行了一个 Dalvik / ART 虚拟机,所有的^ 7 C i [ 3应用必须运行在这个虚拟机上,所以安卓的应S k o N H用都是用 Java 来开发的。在 Linux 的发行版本中,我们可以使用 Java 虚拟Z O ? 5 /机,Z @ ~也可以使用其他框架,比如 GTK, QT等等,它们编译出来的二进制代码可以直接运行在 Linux 内核上,它们和 D/ d 8 b U ` j Palvik / ART 是一个层次上x 0 j的东西,所以安卓和 Linux 的发行版本本质上是一样的。

原文地址hb 9 V $ttps://www.cnblogs.com/jfzhu/p/12986863.html