为何Android只选择了Linux?最终成就了这帮金领贵族

电子发烧友网 2018-08-24 14:11:24


周末时刻

Android 是基于Linux的低层代码搭建起来的。当然这个跟我们关系不大,但是吃水不忘挖井人嘛,我们在这里先缅怀下先人。


Android 名字的来源


Android 是安迪鲁宾创办的公司,据说这个名字来源于一部叫做《未来夏娃》的科幻小说中的机器人的名字。Android的logo也是机器人。特别有意思,这个小机器人的设计灵感来源于washing room的标志。


安迪在微软和苹果都工作过,后来自己创业。创业公司嘛,总有种用不了几天就倒闭的感觉,像素范儿也是这样,我们的几个创始人,都会晚上睡不好。哎,总在担心中试探前行着。安迪在创建公司的第22个月就撑不住了,然后他就去找资本啦,然后就找到了google爸爸,google爸爸在2005年把它收并了。


2007年11月5日谷歌正式向外界展示了Android的操作系统,并宣布建立一个全球性的联盟组织,该组织由34家手机制造商、软件开发商、电信运营商一记芯片制造商共同组成。而就是这一联盟,共同开发Android系统的开放源代码。Android由于开源免费,很快就代替了诺基亚S6.0以及windows的moble,并被广泛应用于手机、平板、穿戴设备以及智能设备。我新买了个50多寸的智能电视,其内置系统就是安卓的。


安迪和乔布斯


长得很像哈,乔布斯说安迪模仿我的脸还模仿我的系统。当Android 1.0搭载在HTC上展示给大家时,引发了二人的唇枪舌战。最后安迪的老板出面,做出来让步,这一举动甚至让安迪动了离开谷歌的念想。Android和iOS的拉锯战打到今天,很难说谁成功,如果从市场所占份额上,毫无疑问当今Android占了上风。


大家都知道Android是基于Linux内核的操作系统,也曾经和Linux基金会因为内核问题产生过分歧,本文将开始对Android的内核进行剖析,主要介绍Android和Linux之间的关系,后续还会讲到Android系统在Linux系统之上扩展的部分功能和驱动。


Android 系统框架


Android操作系统,在软件层次结构上包括了一个操作系统(OS),中间件(MiddleWare)和应用程序(Application);系统由四层架构组成,分别是:内核层,运行库层,框架层和应用层。


内核(Linux Kernel):Android使用Linux作为操作系统,其对操作系统的使用包括核心和驱动程序两部分,Android的核心为标准的Linux内核,再加上一些与相关设备的驱动程序。


各种库(Libraries)和Android 运行环境(Run Time):Android 包含一套C/C++库, 被用于Android 系统中的各种组件中. 这些功能通过Android 应用框架展现给开发人员。Android 运行时 Android包含一组核心库, 提供了Java语言核心库内的大部分功能。


应用程序框架(Application Framework):Android 应用程序由一个或多个组件组成,Android的应用程序框架为应用程序层的开发者提供APIs,它实际上是一个应用程序的框架。由于上层的应用程序是以JAVA构建的,因此本层次提供的首先包含了UI程序中所需要的各种控件。



应用程序(Application):Android的应用程序主要是用户界面(User Interface)方面的,通常以JAVA程序编写,其中还可以包含各种资源文件(放置在res目录中)JAVA程序及相关资源经过编译后,将生成一个APK包。Android本身提供了主屏幕(Home),联系人(Contact),电话(Phone),浏览器(Browers)等众多的核心应用。同时应用程序的开发者还可以使用应用程序框架层的API实现自己的程序。


Android系统4层架构之间,应用层通过框架对使用到库进行调用、内核负责内存管理进程调度等。通过在不同层上的裁剪可以实现部分功能的移出。例如:应用层上移出APK,相应应用无法使用;运行库层移出运行所需的库文件,所有调用该库文件均报错不能执行;在内核层上,通过config编译内核也可达到同样目的。


虽然Android基于Linux内核,但是它与Linux之间还是有很大的差别,比如Android在Linux内核的基础上添加了自己所特有的驱动程序。下面我们就来分析一下它们之间究竟有什么关系?


Android 为什么会选择 Linux


成熟的操作系统有很多,但是Android为什么选择采用Linux内核呢?这就与Linux的一些特性有关了,比如:


强大的内存管理和进程管理方案;

基于权限的安全模式;

支持共享库;

经过认证的驱动模型;

Linux本身就是开源项目。


更多关于上述特性的信息可以参考Linux 2.6版内核的官方文档,这便于我们在后面的学习中更好地理解Android所特有的功能特性。接下来分析Android与Linux的关系。


Android 不是 Linux


看到这个标题大家可能会有些迷惑,前面不是一直说Android是基于Linux内核的吗,怎么现在又不是Linux了?迷惑也是正常的,请先看下面几个要点,看完后你就会觉得Android不是Linux了。


1.它没有本地窗口系统;

2.它没有glibc支持;

3.它并不包括一整套标准的Linux使用程序;

4.Android专有的驱动程序。

成为金领贵族Android工程师的机会

为什么需要对Android系统进行定制、裁剪?


这是Anroid开发工程师比较重要的技能。简化系统,提高系统运行效率:Android的系统提供了很多标准的驱动和中间件,这些标准间,一方面极大的方便了开发人员开发应用程序,提高了开发效率,缩短的开发时间,但是另一方面,也让系统变得庞大和臃肿。对于专用设备来说,系统越轻便,稳定性越高,系统响应越快。所以,为专用设备定制专用的系统,可以简化代码,提高系统的运行效率,缩短启动时间。


对特殊硬件的支持:在工业应用的过程中,经常会遇到一些专用的外接设备。专用的设备必须有专用的驱动。所以,为专用设备定制专用的驱动程序,也是系统定制的重要目的之一。


1.提供专业的人机交互界面:对于一些专用的设备来说,大部分时候,只需要运行一个应用软件,那么,对于这样的应用系统,并不需要传统的Android界面的支持,所以,系统专门为一个应用软件提供专用的界面,让产品更加专业化。


2.开发专用的应用软件:应用软件的开发是Android系统的组成部分,针对专用的设备,开发专用的应用软件,完成整个产品的设计。


Android主要应用领域

Android应用广泛,“多金”、“就业有保障”已然成为Android开发工程师的标签。


然而很多人依然迷茫:

零基础,如何快速成为Android项目开发工程师?

有Linux底层知识,如何向上层扩展,提升Android开发能力?

有APP开发经验,如何向下深入掌握Android系统?

有Java经验,如何进一步学习Android开发?

如何成为一个具备统筹开发完整Android嵌入式产品能力的资深工程师?

如何优化Android系统并进行定制化开发?

……


很多人想玩转Android开发,成为技术大牛,秒杀如Linux内核定制和裁剪、外设驱动设计和开发、文件系统移植、开发平台搭建、中间件的裁剪和UI界面以及定制化…然而,总是碰到诸多棘手难题而无法逾越,有时甚至恨不得砸电脑解恨。


方法总比问题多。

超过十年嵌入式开发经验的韦东山老师再次大力推出呕心沥血之作——“零基础快速成为Android项目开发工程师”视频课程


六个月系统学习+韦东山老师亲授+专属学习群/小组答疑+在线直播答疑与深入学习

一切只为保证您切实掌握Android技能,成为合格的Android开发工程师。


长按二维码或点击下方“阅读原文”

0基础 快速成为Android项目开发工程师


课程学习计划

↙↙↙点击“阅读原文”立即观看精彩课程
友情链接