安卓到底是不是Linux
有人说安卓就是 Linux,也有人说安卓是安卓、Linux 是 Linux,两者没什么关系,还有人说安卓用的是 Linux 的内核,那么它们之间到底是什么关系呢。要想得到这个问题的答案,我们要先弄清楚几个概念。
Linux 与 Linux 内核
Linux 与 Linux 内核其实是不一样的,关于这个问题,我在之前的一篇文章中讲过(《Linux,Unix,GNU 到底有什么样的渊源?》)。Linux 的内核是由 Linus Torvalds 在1991年首次编写。它是操作系统的核心,包括设备驱动、文件系统、进程管理、网络通信等。但是操作系统光有内核,用户是没有办法操作的,所以很多厂商和 Linux 社区就在内核之上开发了很多工具,比如我们常用的 GNome桌面,FireFox浏览器、GIMP 图片编辑器等等。Linux 内核和这些应用一起打包后就被称作 Linux 发行版本。Linux 有很多的发行版本,我在之前的文章中(《这么多Linux版本,你究竟该怎么选择?》),对不同的版本做过比较。

所以我们常说的 Linux 有两个含义:
1) Linux 内核,这个严格来说应该叫 GNU/Linux,因为它是 GNU 计划的一部分
2) Linux 发行版本,比如 Debian、Ubuntu、Mint、RedHat等等
那么安卓和 Linux 内核或者 Linux 发行版本有什么关系吗?
安卓与 Linux 的关系
安卓实际上用到的是 Linux 的内核。因为 Linux 本身是开源的,所以谷歌的工程师们选择了在 Linux 内核基础之上做裁剪定制,这样他们就不需要从头开始来开发一个全新的系统。BTW,这在大厂当中也是一种比较常用的做法,比如 Playstation 的操作系统用的是 FreeBSD的内核,XBox 用的是 Windows NT 的内核。在安卓的手机上,在系统信息中你可以看到 Linux 内核的版本。

既然安卓用的是 Linux 的内核,那是不是可以说它就是 Linux的一个发行版本呢?先看一下安卓和其他 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”而已。
解释清楚了安卓与 Linux 内核的关系以及与 Linux 其他发行版本的区别后,我们再来看下小伙伴们经常问到的两个问题:
1) 可以在安卓上运行 Linux 的桌面应用吗?
因为安卓有很多标准的 GNU 库没有安装,也没有安装图形 X server,所以答案是不能。不过有一些应用尝试让我们在安卓环境中使用 Shell,安卓终端模拟器还有busybox,感兴趣的同学可以去了解一下。
2) 可以在Linux 桌面上运行安卓的应用吗?
因为其他 Linux 发行版本也没有 Dalvik / ART,所以安卓的应用在 Linux 桌面上不能直接运行。不过我们只需要将 Dalvik / ART 移植到 Linux 桌面环境就可以了。正是基于这个原理,市场上有很多安卓手机模拟器,不仅可以用在 Linux 桌面,还可以用在 Windows 以及 Mac 上。
总结
安卓的操作系统核心是在 Linux 内核上做了一些裁减和定制,并且在内核之上运行了一个 Dalvik / ART 虚拟机,所有的应用必须运行在这个虚拟机上,所以安卓的应用都是用 Java 来开发的。在 Linux 的发行版本中,我们可以使用 Java 虚拟机,也可以使用其他框架,比如 GTK, QT等等,它们编译出来的二进制代码可以直接运行在 Linux 内核上,它们和 Dalvik / ART 是一个层次上的东西,所以安卓和 Linux 的发行版本本质上是一样的。
推荐阅读:

- The End -
安卓到底是不是Linux的更多相关文章
- 闲置安卓设备搭建Linux服务器实现外网访问
title: 闲置安卓设备搭建Linux服务器实现外网访问 这是我搭过的第一个博客系统,写贴纪念一下 待博主整理好思路,将今天所用到的全部分享! 好吧,我就是穷.富人靠科技,穷人靠变异.我这种穷人是真 ...
- 如何选安卓android|linux系统开发板,简化学习难度,缩短开发进程
平台一:iTOP-4412精英版 系统支持:Android 4.0.3系统 / Android 4.4系统 / Linux + Qt系统 / Ubuntu12.04系统 开发板特点:Cortex-A ...
- 安卓安装kali linux之Termux
解决安装kali无模组问题 https://blog.csdn.net/weixin_44690490/article/details/108599693?utm_source=app 步骤 1.获取 ...
- 一篇文章看清楚 Linux 的职业发展方向
手机.汽车.甚至宇宙飞船,在今天的科技世界中,你几乎到处都能看到 Linux 的身影.前两天 SpaceX 成功将宇航员送入太空的猎鹰9号火箭与龙飞船用的也是 Linux的操作系统.身处与 Linux ...
- 安卓运行linux应用程序
安卓是可以运行linux应用程序的,安卓系统原来就基于Linux.但是安卓已经把linux改头换面了.具体方法是安装Termux软件,然后就可以运行pkg命令安装软件包了,希望可以帮助到大家.
- React++ node.js ++SQL Sever ++MySQL++ python ++ php ++ java ++ c++ c#++ java ++ android ++ ios ++Linux+
"C语言在它诞生的那个年代,是非常不错的语言,可惜没有OOP.当项目臃肿到一定程度,人类就不可控了. 为了弥补这个缺陷,C++诞生了.而为了应对各种情况,C++设计的大而全,太多复杂的特性, ...
- 在你的andorid设备上运行netcore (Linux Deploy)
最近注意到.net core 的新版本已经开始支持ARM 平台的CPU, 特意去Linux Deploy 中尝试了一下,真的可以运行 Welcome to Ubuntu 16.04 LTS (GNU/ ...
- 1,linux基础知识以及新建虚拟机
1,Windows图形界面只是在个人电脑上普及(dos界面):lunix是在服务器领域,服务器上绝对不出现图形化界面(命令行). 2,2.6.18 主板本,次版本,末版本 如果末版本积累到一定程序就 ...
- 关于“学习Linux用什么系统”的解答
首先,阐述一下,我个人的观点——这个问题我曾经也想了很久了,这绝不是长篇大论后就是简单一句,适合你的就是最好的.其实,很多人看到这一句,心里已经有成千上万个奔腾了(至少我当时是这样的),为什么?因为我 ...
随机推荐
- MySQL高级(十三)--- 表锁
前言:锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除传统的计算机资源(如CPU.RAM.I/O等)的争用外,数据也是一种供许多用户共享的资源.如何保证数据并发访问的一致性.有效性是 ...
- HBase Filter 过滤器之RowFilter详解
前言:本文详细介绍了HBase RowFilter过滤器Java&Shell API的使用,并贴出了相关示例代码以供参考.RowFilter 基于行键进行过滤,在工作中涉及到需要通过HBase ...
- .Net Core WPF之XAML概述
原文链接,机器翻译,有误处参看原文. XAML overview in WPF 2019/08/08 What is XAML XAML syntax in brief Case and white ...
- 关于51单片机IO引脚的驱动能力与上拉电阻设计方案
转载自:http://bbs.dianyuan.com/article/20312-2 单片机的引脚,可以用程序来控制,输出高.低电平,这些可算是单片机的输出电压.但是,程序控制不了单片机的输出电流. ...
- SQL注入和Mybatis预编译防止SQL注入
什么是SQL注入?? 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或页面请求url的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具体来说,它是利用现有应用程序,将(恶意)的SQL命 ...
- Spring MVC教程——检视阅读
Spring MVC教程--检视阅读 参考 Spring MVC教程--一点--蓝本 Spring MVC教程--c语言中午网--3.0版本太老了 Spring MVC教程--易百--4.0版本不是通 ...
- Mysql 常用函数(13)- right 函数
Mysql常用函数的汇总,可看下面系列文章 https://www.cnblogs.com/poloyy/category/1765164.html right 的作用 返回字符串 str 中最右边的 ...
- 1005 Spell It Right (20分)
1005 Spell It Right (20分) 题目: Given a non-negative integer N, your task is to compute the sum of all ...
- python--制作微信好友照片墙
知识来源:https://zhuanlan.zhihu.com/p/73975013 1.环境 os:MAC tool:python 3.7 ,pip3.7 2.前提: 使用pip3.7 instal ...
- Windows 系统如何安装 Docker
1 docker 是基于 unix 开发的系列工具,所以在 windows 上安装 docker 非常容易出现环境不兼容的问题. 如果 windows 版本是 pro,一般是可以直接安装 docker ...
