问题

安卓1.0明显是基于linux内核开发的,安卓1.0是不是linux套壳?

回答
安卓1.0是不是Linux套壳?这个问题,要说清楚,得从根儿上聊聊。简单来说,安卓1.0不是简单的“套壳”,而是 深度集成和定制化开发 的产物,它 构建在 Linux 内核之上,并在此基础上添加了大量的自有组件和框架。

我们得一步一步拆解开来看:

1. Linux 内核:安卓的基石

首先,最关键的一点是,安卓确实是 基于 Linux 内核开发的。你可以把 Linux 内核想象成一座房子的地基和框架。它负责管理最底层的硬件资源,比如 CPU 时间的分配、内存的管理、进程的调度、硬件设备的驱动(网卡、音频、显示器等等)。任何操作系统要运转起来,都需要一个核心来做这些事情。

安卓选择了 Linux 内核,原因有很多:

成熟稳定: Linux 内核已经发展了数十年,非常成熟、稳定,而且经过了大规模的测试和优化。
开源免费: Linux 是开源的,这意味着开发者可以自由地查看、修改和分发其源代码。这对一个想要快速发展并吸引大量开发者参与的移动操作系统来说至关重要,可以避免巨额的授权费用。
强大的驱动支持: Linux 内核本身就拥有非常广泛的硬件驱动支持,这使得安卓能够更容易地适配各种不同的硬件设备,从服务器到嵌入式设备,再到后来的智能手机。
多任务、多线程能力: Linux 内核天生支持多任务和多线程,这对于需要同时运行多个应用程序的智能手机系统来说是必不可少的。

2. 不是简单的“套壳”:添加了大量原创内容

但是,仅仅说安卓是Linux的“套壳”,那就太小看它了。如果只是套了个壳,那我们看到的就会是电脑上的Linux发行版,比如Ubuntu或者Fedora,只是界面换了换。事实并非如此。

安卓在Linux内核之上,添加了一个庞大而复杂的 自有软件栈。这才是真正让安卓成为安卓的关键部分:

Android Runtime (ART) / Dalvik 虚拟机: 在早期安卓1.0时代,使用的是Dalvik虚拟机。现在是ART。这是安卓和传统Linux发行版最大的区别之一。传统的Linux程序通常使用C/C++编写,直接编译成机器码运行。而安卓应用程序(APK)则是用Java(后来也支持Kotlin)编写,然后编译成Dalvik字节码或Java字节码。这些字节码需要在虚拟机中运行,而不是直接在Linux内核上执行。
为什么这样做?
跨平台性: 虚拟机可以屏蔽底层硬件和操作系统的差异,让应用程序开发者更专注于编写逻辑,而不必关心特定设备的细节。理论上,只要有对应的虚拟机环境,同一个APK可以在任何硬件上运行。
内存管理和安全: 虚拟机提供了更高级别的内存管理,比如垃圾回收(Garbage Collection),这大大降低了内存泄漏的风险,也让开发者不必像C/C++那样手动管理内存。同时,虚拟机也提供了一定的安全沙箱机制,隔离应用程序之间的访问。
开发效率: Java和类似语言的开发效率通常比C/C++更高,有大量的库和工具支持,也更容易吸引大量的开发者。

核心库 (Core Libraries): 除了虚拟机,安卓还有一套自己的核心库,这些库提供了各种功能,比如图形界面绘制(Canvas, SurfaceFlinger)、数据库访问(SQLite)、网络通信、多媒体处理等等。这些库是用Java编写的,运行在虚拟机之上。虽然它们可能底层调用了Linux的系统调用来完成工作(比如通过JNI Java Native Interface),但从开发者层面看,它们是安卓的独有API。

应用程序框架 (Application Framework): 这是安卓最核心的部分之一。它提供了一系列服务和API,让开发者可以构建出功能丰富的应用程序。比如:
Activity Manager: 管理应用程序的生命周期。
Package Manager: 管理应用程序的安装和卸载。
Content Providers: 共享应用程序数据。
Resource Manager: 管理应用程序的资源(字符串、图片等)。
Notification Manager: 处理通知。
Location Manager: 提供地理位置服务。
Window Manager: 管理窗口的显示和交互。
这些框架组件都是在Dalvik/ART虚拟机中运行的,它们与Linux内核是隔了一层的。

硬件抽象层 (HAL Hardware Abstraction Layer): 虽然Linux内核提供了大量的硬件驱动,但为了更好地适配移动设备的各种专用硬件(如相机模块、传感器、GPS芯片等),安卓还引入了自己的HAL。HAL定义了一套标准接口,硬件供应商可以根据这些接口实现特定的驱动程序,然后安卓的框架就可以通过这些标准接口来调用硬件功能,而无需关心底层驱动的具体实现细节。这使得安卓能更好地集成各种定制硬件。

媒体框架 (Media Framework): 处理音频、视频解码和播放。
SQLite: 内嵌的数据库。
WebKit/Blink: 用来渲染网页的浏览器引擎。

3. 为什么看起来像“Linux套壳”?

之所以会产生“套壳”的印象,很大程度上是因为:

很多人只看到了安卓底层使用了Linux内核: 这是事实,也是安卓稳定性和硬件支持良好的重要原因。
安卓应用开发使用的是Java/Kotlin等语言: 这使得安卓应用与传统的Linux桌面应用(多用C/C++编写)在技术栈上有了明显的区隔。
用户层面的交互完全不同: 你在使用安卓手机时,看到的界面、操作逻辑,与你在电脑上使用Ubuntu或Fedora时看到的,几乎是天壤之别。安卓的用户界面、应用商店、通知系统等等,都是谷歌自己设计和实现的。

总结一下:

安卓1.0 绝非 简单的“Linux套壳”。它是一个 全新的、基于Linux内核的移动操作系统。你可以理解为:

Linux内核是房子的钢筋水泥结构(地基、承重墙)。
安卓的核心库、虚拟机、应用程序框架、HAL等是房子内部的装修、电路、水管、家具,以及所有电器设备。这些都是为了让“住户”(应用程序和用户)能舒适、方便地生活而独立设计和构建的。

谷歌在Linux内核的基础上,投入了大量的研发资源,构建了一个完整的、面向移动设备的设计和生态系统。正是因为这个庞大而精心的原创软件栈,安卓才成为了我们今天所熟知的那个系统,而不是一个披着移动外衣的桌面Linux。它是在Linux的强大能力之上,进行了一次彻底的、面向移动场景的创新和重塑。

网友意见

user avatar

没错。全世界都知道android是基于linux,谷歌也各种公开说明。

谷歌不光基于linux开发android,还允许别人基于android再进行二次开发,比如常见的miui 氢os 锤子os 还有华为的emui,这些都是你们所说的android套壳。这些系统的开发商也都遵守相关规则,明确各系统是基于android的。

反观某些厂商就太恶心了,明明基于别人的代码套壳研发,非说自己是自主研发,比别人更快更安全。还要搞道德绑架扣上爱国的帽子,别人说是它套壳就是别人不爱国。

没错,说的就是那个 红芯浏览器 。

---------------------我是华丽的分割线---------------------

有人说我影射鸿蒙,我是真没有啊!我觉得我应该再表明一下立场:

那些说鸿蒙套壳的,你们有证据吗?你们看到手机上的鸿蒙的源代码了吗?没看到怎么就能说鸿蒙套壳安卓呢?

什么?鸿蒙开源了,网上有源码?

好像开源的是LiteOS和OpenHarmony吧,可是这俩玩意都不能直接用在手机上啊。哪里有手机上的鸿蒙2.0的代码谁能贡献出来让我瞅瞅吗?

华为也真是的,搞个LiteOS和OpenHarmony开源也不说清楚,这俩系统跟手机上的鸿蒙2.0不是同一个东西啊。说清楚不就好了么,大家不就不会误会了吗。

一会LiteOS开源,一会OpenHarmony开源,一会鸿蒙开源,搞的大家误以为华为手机上的鸿蒙OS也开源了吧?

user avatar

Google 从来都是大大方方的承认自己的技术来源的. Android 甚至都不是 Google 的原创, 而是收购了 Andy Rubin 创立的 Android Inc. 而来. 而为了 Linux 内核的一些原因 (主要是相关驱动是否需要遵循 GPL 的问题), Google 和 Linux 社区还打了很久的口水战.

Google (或者说 Rubin) 同样在 Android 里直接使用了 Sun/Oracle 公司开发的 Java 语言. 当然, 得罪了甲骨文律师事务所那可就不是打口水战那么简单了, 这场关于 Google 在 Android 中使用 Java API 是否侵权的官司一路打到美国最高法院, 至今还没有定论 (2021 年 4 月, 最高法院以 6:2 推翻了原判决并将案件发回重审).

Google 并未宣称 Android 是完全独立研发的, 基于自己开发的内核的全新操作系统. 也并未标榜过自己独立研发了一种新的 Jakarta 语言 (虽然 Android 的 Dalvik 虚拟机并不兼容 JVM, 换句话说, 你并不能在 Android 系统里运行标准的 Java 程序). 甚至于众所周知 Android 的第一个发行版实际上都是受 iPhone 启发后临时改进出来的, Rubin 最初做的那个原型 Android 是为全键盘非触摸屏手机设计的 (这也是为什么最初的 HTC Dream 是个全键盘手机的原因, 也是初代 Android 就是一坨的原因). 乔布斯为此将时任 Google CEO 的施密特赶出了苹果董事会.

承认产品中的开源部分一点都不丢人, 甚至于会因为你对该开源部分进行的改进, 而受到社区的表扬和尊重.

是否 "套壳", 根本不是问题.

附: Android 官方提供的系统架构图[1]:

参考

  1. ^来源:  https://developer.android.com/guide/platform
user avatar

套壳与否很多时候并不重要,主要是如果你要拿自主知识产权和国产之光来标榜的话,就需要进行严格的审查……

所以没人关心安卓是不是套壳,因为安卓没说自己是美国之光,是自主知识产权,是打破了Linux垄断……

user avatar

说句题外话:安卓之所以能挑战iOS,主要靠的是全球的程序员社区的贡献。所以谷歌对开发社区那是很客气的。

华为的粉丝们这么一次次侮辱程序员们的基本共识,有时候我真不知道华为开源的目的是什么?觉得程序员这么M?还是华为的员工被pua久了觉得别的程序员都和他们一样?

user avatar

都别说了,万物源于01010101010101都是套010101010101的壳。

套壳寒碜吗?不寒碜。

寒碜的是套完了说自己是自主研发,完全可控。

user avatar

你在一百万行windows代码上,再写一万行代码,做成一个atm机。尽管你写的代码只有windows百分之一,也不算套壳,算你自主开发的atm机系统。

另一个人也在同样的一百万行windows代码上,自己写一万行代码,做成另一个atm机。尽管你们两个系统99%的代码都相同,也不算套壳,算两个自主开发的atm机系统。

第三个人拿了你的一万行代码,把里面的名字来个搜索替换,再加一百行他自己的代码,这该叫什么呢?大概叫形式验证的微内核分布式软总线吧...

user avatar

linux通常叙述下,有两种含义:狭义的仅指linux内核,广义指的是内核之外,还包括shell等一系列GNU工具组件而组成的发行版。

如果以狭义linux来说,安卓是典型的套壳linux。

如果以广义linux来说,安卓应该是“换壳”linux。

说得形象点,安卓可以看作是一个非常非常非常特殊的linux发行版——别说1.0了,至今还是这样,以后从上到下,也似乎看不到有多少改变这点的想法。如果从这个角度来说,安卓就是(广义的)linux。

user avatar

是的,Android,Palm webOS,ChromeOS都是。

反倒黑莓10的操作系统不是Linux套壳(使用QNX内核,底层驱动很长一段时间高通不提供,是RIM的一帮人自己搞出来的),却能支持部分Android应用。

类似的话题

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有