Android系统架构及生态链

本文详细探讨了Android的操作系统架构,包括Linux内核、应用层、框架层和系统运行库。Android Framework作为核心,负责应用组件交互规则,并提供多媒体等功能。Android生态链涉及Google、芯片厂商、设备厂商和运营商的定制。文章还讨论了国产自主OS的可能性,指出其可能基于Linux并兼容Android。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、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 生死存亡的决定者。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值