Android系统架构及生态链
目录
一、Android系统架构
二、Android生态链
一、Android系统架构
- 最底层是 Linux Kernel 层。Android OS 的基石是 Linux Kernel
- Android Framework:中间两层由下到上是 Native Framework 层和 Java Framework 层。这两个是 Android 独有的 (Android OS)。
- 应用层:最上层是应用层。正是基于 Android Framework
分为四层:
1.应用层
2.应用程序框架(FrameWork)
3.系统运行库
4.内核层
重点讲Android FrameWork层
- Android Framework 有很多功能模块的。
- 功能模块有可能是放在 Java Framework 里,也有可能是 Native Framework 里。
- 功能模块可以分布在多个进程中,彼此之间,或对应用层以 Binder 方式进行进程间交互。
应用程序框架(FrameWork)
帮助程序员快速的开发程序,并且该应用程序重用机制也使用户可以方便的替换程序组件。(框架的安全性限制)
系统运行库(Libraries又称 Native Framework)
- 程序库
- Android包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过Android应用程序框架为开发
- 媒体,2D图片引擎,SQLite等
- Android 运行库
- 该核心库提供了JAVA编程语言核心库的大多数功能。
- Dalvik虚拟机的一些逻辑
上述四个层次中,Kernel 历史最悠久,到今天就剩下大概 Windows,Linux、macOS 三个巨头了
以上唯有 Linux 不归某个公司独有。所以,Android 使用 Linux 是必然的选择。如果我们要搞国产自主 OS 的话,最大可能性也是基于 Linux,比如现在的优麒麟,以前的红旗都是这样。
Android各个 层级之间的交互关系
1.App 和 Java Framework 有交互。某些情况下也可以和 Native Framework 模块交互(图中并未画出相关的箭头线)。
应用层只与FrameWork层有交互
2.Native Framework、Java Framework 均有和 Linux 交互。
3.Java Framework 中的部分模块和 Native Framework 中的部分模块有交互。
Linux是宏内核,Android OS是微内核(Windows 和Mac也是微内核)
微内核:内核只做一些基本的服务(比如操作 CPU,进程调度,内存管理、设备管理等)。然后将其它功能独立为除内核之外的多个进程。
缺点:其它进程和内核之间的交互属于进程间通信IPC,开销比较大。
宏内核:把上图中的所有东西都塞到内核里。这样大家都运行在一个进程里(主要是指共享同一个内存空间——内核地址空间),
优点:极大减少模块间交互的开销
缺点:但问题就是一旦有一个模块出问题,整个 kernel 都可能挂掉。
Android Framework 中的功能模块并非都挤在一个进程里,而是分散在不同进程中,功能模块之间通过进程间通信的手段交互。所以,从应用的角度看,Android OS 肯定是一个微内核。
Android为什么能成为OS:
FrameWork层为android定制了一套开发及交互规则
1.Activity启动时候 FrameWork会更加定制的Activity的规则去控制Activity的流程
2.Android 上,一个应用要播放视音频的话,依赖 MediaPlayerService、SurfaceFlinger、AudioFlinger、硬件编解码模块等。这套东西也不是 Linux 带过来的,而是 Android 搞出来的。编解码,播放功能均由系统提供了,应用程序再也不用操心这些东西。这无疑是一个很大的进步。
结论,基于Linux之上为应用层设计了FrameWork层,
1.制定了四大组件的一些交互规则
2.为应用层使用一些Linux的基础功能做了一层封装(音频那套)
Android 可以称为OS
二、Android生态链
Android与苹果生态的区别
安卓的生态链有(从上到这)
1.Google发版 2.芯片厂商定制功能 3.设备厂商设计特性 4.运营商
苹果没有 1到3都是自己,没有各种分支的定制,运营商也不太考虑
优势:
- 发版本快(1到3是一步到位)
- 没有各种定制(1到3是一步到位)
缺点:通信芯片是苹果的大问题,所以老有人吐槽 iPhone 的信号不好
Android手机发布更新的过程:
①Google首先发布版本,AOSP原生代码。AOSP原生代码只支持极少数几款手机。
②芯片厂商(高通、华为、MTK)在 AOSP 基础上发布自己的版本。
1.芯片厂商会在 AOSP 原生代码上叠加自己的功能,比如以前 AOSP 没有双卡双待功能,这些功能有一些是芯片厂商自己加的。
2.针对自己发的版本做测试。
③终端厂商(华米 OV 等)使用芯片厂商提供的 Android 代码。然后,设备厂商还得魔改一下,加上终端厂商自己的特性。
这就是 MIUI、EMUI、ColorOS 等的功能。
④现在大部分终端厂商使用芯片厂商的 Turnkey 方案,主要是 CPU+通讯模组,芯片+软件打包卖给终端厂商。少数公司比如魅族使用的 CPU 是三星,而通信模组不知道哪一家,那么魅族就需要把三星的 CPU 和别家的通讯模组整合到一起,难度比使用 Turnkey 方案得大一些。
⑤终端厂商集成完后,还需要考虑运营商定制的情况,然后加上对应的运营商定制功能,并做对应的测试。
--------------
以下不需要深挖
再说下我对国产自主 OS 的一些看法和判断。
不出意外的,中长期(十几年之内,如果量子计算机还没有普及的话)看,依然会以 Linux Kernel 为核心(这里不考虑那些特殊场景的 OS,比如工控机用的实时 OS 等)。只要使用 Linux Kernel,绝大部分硬件厂商都能适应。否则来个新 OS,硬件厂商又得开发驱动,还要做大量测试,这个所需的时间和金钱成本都非常巨大。
如果国产自主 OS 兼容 Android 的话,说明原有 Android 的功能等大概率会保留。这是从应用角度来看的。当然,也可以魔改 Android Framework,把内部实现都换成自己写的代码。但是要做到兼容的话,就必须对应用没有影响——这就回到软件界的一句老话,如果一个东西叫起来、走起路来都像鸭子的话,那它就是鸭子。从这个角度看,自主实现只是为了开发一套看起来和之前系统类似的话,意义并不重大,这种自主也很难被认可。当然,如果能提升原有系统的性能则另当别论,这属于优化和改善,和我们讨论的不是同一个东西。
所以,国产自主 OS 要么像 Android 一样基于 Linux 开发,但是套路和 Android 完全不一样的,比如像 Meego、Tizen 这样的。要么就是拓展 Android OS,开发出类似一个 H5 OS 之类的。
最后,如果抛弃 Linux 的话,可参考 Google 的 Fuchsia 了。Fuchsia 据说是一个微内核的新 OS 架构。不过,目前 OS 的前途并不明朗。OS 从来就不是一个纯软件的事情,还涉及到海量硬件厂商。它们甚至是一个 OS 生死存亡的决定者。
Android系统架构及生态链相关推荐
- Framework学习(一)深入Android 系统架构
Android系统架构 说到Android,大家都知道他是目前移动市场最大的终端系统,拥有着广阔的市场价值,因此,作为一名开发者,深入了解Android是很有必要. 其实,Android的本质就是在标 ...
- 安卓进阶之android系统架构
安卓进阶之android架构 安卓进阶躲不开阅读源码和深入了解安卓的底层,这是一篇入门级别的文章,可以对安卓架构有个大体的认识. AOSP与Android系统架构 首先要理解andriod和AOSP的 ...
- 重走Android路 之 Android系统架构图以及开发工具了解
LZ-Says:热腾腾的一天那,貌似今天帝都达到了高温,热腾腾,我滴天...各位老铁注意防暑,多喝水~~~ 前言 昨天更新了一篇启程文,地址如下: 重走Android路 之 今日正式启程:https: ...
- Android系统架构-[Android取经之路]
摘要:本节主要来讲解Android的系统架构 阅读本文大约需要花费10分钟. 文章首发微信公众号:IngresGe 专注于Android系统级源码分析,Android的平台设计,欢迎关注我,谢谢! 欢 ...
- Android系统架构图及简单的系统架构介绍
2019独角兽企业重金招聘Python工程师标准>>> ndroid的系统架构和其操作系统一样,采用了分层的架构.从架构图看,android分为四个层,从高层到低层分别是应用程序层. ...
- Android系统架构基本模式解析
Android系统架构总共被分为四层,在这里大家就可以通过介绍对这四个层次进行一个深入的解读,以加深大家对这一系统的认识. 如今,大家面对市场中种类繁多的手机必然挑的眼花缭乱.不过,在智能手机占据主要 ...
- android phone驱动_一文带你掌握 Android 系统架构
引言 本文作为Android系统架构的开篇,起到提纲挈领的作用,从系统整体架构角度概要讲解Android系统的核心技术点,带领大家初探Android系统全貌以及内部运作机制.虽然Android系统非常 ...
- linux与安卓系统目录,android系统架构及源码目录结构
1. android系统架构: android系统架构采用了分层架构的思想,如下图所示,从上到下共4层,分别为:应用程序层.应用程序框架层.系统库和android运行时层.linux内核层. 每层功能 ...
- Android系统架构开篇
Android系统庞大且错综复杂,Gityuan带领大家初探Android系统整体架构,一窥其全貌. 一.引言 本文作为Android系统架构的开篇,起到提纲挈领的作用,从系统整体架构角度概要讲解An ...
最新文章
- 在Ubuntu 14.04 64bit上编译安装Crtmpserver trunk svn 811版本!
- Apache遇到的问题:APR not found
- 计算机连接外设的端口驱动,将 KMDF 外设驱动程序连接到串行端口
- UNIX中的restrict
- 添加chorme插件时出现“程序包无效”
- excel中VBa应用总结
- 学习Spring Boot:(十四)spring-shiro的密码加密
- 代码提示(支持3.X和4.X)—ArcGIS API forJavaScript
- 计算机英语词汇解释,常见计算机英语词汇解释
- 郝斌c语言链表源码,链表的创建(郝斌视频)
- web前端课程设计:猫咪领养网站 HTML+CSS+JavaScript
- 工行网银支付浏览器兼容问题小记
- l10n php download,在PHP,WordPress,phpMyAdmin,C,i18n,L10n等双下划线?
- 织梦栏目地址使用栏目名称首字母
- Scratch制作飞翔的小喵小游戏
- 信捷PLC 批量传送位 MOV DMOV QMOV
- 《 C语言程序设计(第2版)》 读书笔记
- 计算机无法用u盘重装系统,电脑进不了系统怎么用u盘重装系统?
- 一种有趣的隐写技术(图转声,声转图)
- linux GPT分区工具