美文网首页Android Framework
深入理解Android Framework(一) - Andro

深入理解Android Framework(一) - Andro

作者: 林栩link | 来源:发表于2020-03-08 13:45 被阅读0次

    前言

    通常作为一个Android APP开发者,我们并不关心Android的源代码实现,不过随着Android开发者越来越多,企业在筛选Android程序员时越来越看中一个程序员对于Android底层的理解和思考,这里的底层主要就是Android Framewok中各个组件的运行原理,例如Binder的运行机制、ServiceManager的作用等等。

    所以本篇就带你来大致了解一下Android系统的组成,以及Android Framework的层次架构。

    一、Android OS的架构分层

    Android系统架构图

    Android系统是由众多子项目组成的,大致可以分为:应用程序应用程序框架系统运行库Native库硬件抽象层Linux内核六个部分

    我们从下往上依次来解释这几层。

    • Linux内核

    Android底层是基于Linux操作系统的,所以从某种角度上来说,Android并不是一个全新的操作系统,它也属于Linux操作系统的一种变种。
    Android 使用的 Linux 内核版本包含几个特殊的补充功能,例如:Low Memory Killer(一种内存管理系统,可更主动地保留内存)、唤醒锁定、Binder IPC 驱动程序以及对移动嵌入式平台来说非常重要的其他功能。这些补充功能主要用于增强系统功能,不会影响驱动程序开发。

    • 硬件抽象层(HAL)

    HAL 可定义一个标准接口以供硬件供应商实现,这可以让 Android 忽略较低级别的驱动程序实现。
    我们知道Android系统的底层是基于Linux内核的,而Linux遵循GPL协议,这意味着其下所有的驱动程序都必须是开源的,这对于一个以商业为目的的操作系统是无法接受的,所以google的工程师们在Android中提供了HAL(Android基于Apache协议,修改源码无需开源),以保护商家的版权和利益。

    • Native C/C++库 和 系统运行库

    这两层在架构图虽然用不同的颜色表示,不过从图中也能看出它们是平级实际上同属一层。
    这一层包含了支持系统正常运行的基础库。Android中很多基础库都是基于现有成熟开源库,例如OpenGl ES、WebKit、SQLite等
    AndroidRuntime就是Android APP开发者最熟悉的ART虚拟机了。

    • 应用程序框架

    这一层是Android提供的系统组件库,主要为上层应用程序提供API接口。同时也包含了很多很重要的系统服务,如ActivityManager、ServiceManager等面试常客。作为Android APP开发者,对于这一层也是需要有相当程度的认识,同时这一层也是我们理解Android系统的重点,后续我们会着重介绍。

    • 应用程序

    这一层就是我们开发的APP所处的地方,没什么好说的了。

    二、查看Android Framework源码

    要学习AndroidFramework,首先我们需要下载Android的源代码,关于如何下载Android源代码,网络上有很多文章,这里不再赘述。如果你不想下载源码,也可以访问http://androidxref.com/在线阅读源码。

    • 打开网站,选择9.0.0_r3(目前最新的Android应该是Android10)
    • 选择AndroidFramework
    • Android Framework源码结构
    Android Framework源码目录结构

    三、Android Framework目录结构

    Android Framework的源码量很多,层级也很复杂,所以画了张草图来帮助我们理解framework源码的层级结构和每个目录所包含的内容。

    Framework(9.0.0_r3).png

    上面这张图展示了framework的目录结构,不过还不算完善。后续的博客中,我们就以这张图为主,依次剖析framework中较为重要的几个部分的源码,然后再回头来继续完善这张图。

    参考资料

    http://androidxref.com/

    深入理解Android内核设计思想(第二版)

    一、Android系统架构

    相关文章

      网友评论

        本文标题:深入理解Android Framework(一) - Andro

        本文链接:https://www.haomeiwen.com/subject/zkmkdhtx.html