目录

一、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系统架构及生态链相关推荐

  1. Framework学习(一)深入Android 系统架构

    Android系统架构 说到Android,大家都知道他是目前移动市场最大的终端系统,拥有着广阔的市场价值,因此,作为一名开发者,深入了解Android是很有必要. 其实,Android的本质就是在标 ...

  2. 安卓进阶之android系统架构

    安卓进阶之android架构 安卓进阶躲不开阅读源码和深入了解安卓的底层,这是一篇入门级别的文章,可以对安卓架构有个大体的认识. AOSP与Android系统架构 首先要理解andriod和AOSP的 ...

  3. 重走Android路 之 Android系统架构图以及开发工具了解

    LZ-Says:热腾腾的一天那,貌似今天帝都达到了高温,热腾腾,我滴天...各位老铁注意防暑,多喝水~~~ 前言 昨天更新了一篇启程文,地址如下: 重走Android路 之 今日正式启程:https: ...

  4. Android系统架构-[Android取经之路]

    摘要:本节主要来讲解Android的系统架构 阅读本文大约需要花费10分钟. 文章首发微信公众号:IngresGe 专注于Android系统级源码分析,Android的平台设计,欢迎关注我,谢谢! 欢 ...

  5. Android系统架构图及简单的系统架构介绍

    2019独角兽企业重金招聘Python工程师标准>>> ndroid的系统架构和其操作系统一样,采用了分层的架构.从架构图看,android分为四个层,从高层到低层分别是应用程序层. ...

  6. Android系统架构基本模式解析

    Android系统架构总共被分为四层,在这里大家就可以通过介绍对这四个层次进行一个深入的解读,以加深大家对这一系统的认识. 如今,大家面对市场中种类繁多的手机必然挑的眼花缭乱.不过,在智能手机占据主要 ...

  7. android phone驱动_一文带你掌握 Android 系统架构

    引言 本文作为Android系统架构的开篇,起到提纲挈领的作用,从系统整体架构角度概要讲解Android系统的核心技术点,带领大家初探Android系统全貌以及内部运作机制.虽然Android系统非常 ...

  8. linux与安卓系统目录,android系统架构及源码目录结构

    1. android系统架构: android系统架构采用了分层架构的思想,如下图所示,从上到下共4层,分别为:应用程序层.应用程序框架层.系统库和android运行时层.linux内核层. 每层功能 ...

  9. Android系统架构开篇

    Android系统庞大且错综复杂,Gityuan带领大家初探Android系统整体架构,一窥其全貌. 一.引言 本文作为Android系统架构的开篇,起到提纲挈领的作用,从系统整体架构角度概要讲解An ...

最新文章

  1. 在Ubuntu 14.04 64bit上编译安装Crtmpserver trunk svn 811版本!
  2. Apache遇到的问题:APR not found
  3. 计算机连接外设的端口驱动,将 KMDF 外设驱动程序连接到串行端口
  4. UNIX中的restrict
  5. 添加chorme插件时出现“程序包无效”
  6. excel中VBa应用总结
  7. 学习Spring Boot:(十四)spring-shiro的密码加密
  8. 代码提示(支持3.X和4.X)—ArcGIS API forJavaScript
  9. 计算机英语词汇解释,常见计算机英语词汇解释
  10. 郝斌c语言链表源码,链表的创建(郝斌视频)
  11. web前端课程设计:猫咪领养网站 HTML+CSS+JavaScript
  12. 工行网银支付浏览器兼容问题小记
  13. l10n php download,在PHP,WordPress,phpMyAdmin,C,i18n,L10n等双下划线?
  14. 织梦栏目地址使用栏目名称首字母
  15. Scratch制作飞翔的小喵小游戏
  16. 信捷PLC 批量传送位 MOV DMOV QMOV
  17. 《 C语言程序设计(第2版)》 读书笔记
  18. 计算机无法用u盘重装系统,电脑进不了系统怎么用u盘重装系统?
  19. 一种有趣的隐写技术(图转声,声转图)
  20. linux GPT分区工具

热门文章

  1. bootstrap3 文件上传插件fileinput中文说明文档
  2. PEEKABOO——alpha冲刺置顶集合随笔
  3. 跳过SourceTree的注册步骤
  4. 群接龙拼团小程序开发
  5. 如何写好科研论文2021期末考试答案
  6. UNICODE与UTF-8的转换详解
  7. tplink怎么进去_在TP-Link工作体验如何?
  8. 腾讯MSDK手Q微信授权登录
  9. O2O模式成功案例分享 汲取精华化为己用
  10. 华为HCIA认证考试简介