Android基础

分析Android系统的话,有一些比较基础的知识需要先掌握,至少要达到透彻理解原理的程度吧,不然分析具体的模块时肯定会比较吃力的,这也是为什么面试官喜欢问一些基础问题的原因吧,我这里所指的基础,指的是Android各个子系统都可能涉及到的一些概念,属于最基础的一些东西。首先看一下Android系统的软件架构图:


从这张图可以看出,整个Android系统层次是非常分明的,从下到上依次为:

  • Linux内核层
    众所周知,Android系统是一个基于Linux内核的移动端图形化系统,Linux内核提供了如内存管理,进程管理,文件系统,ipc机制,网络协议栈和设备驱动等通用功能,Android在通用Linux内核的基础上,增加了binder驱动、电源管理、匿名共享内存等。
  • HAL层
    这层是为了给上层业务模块提供一个统一的硬件抽象层接口,适配不同的硬件模块,屏蔽掉不同厂商硬件模块的差异,即使硬件模块发生变化,也无需对业务模块做改动。这层包括了各个厂家实现的硬件抽象层模块。
  • native framework层
    这层包括Android runtime,即Android虚拟机实现,各种native层应用程序和服务,各种系统服务、应用程序组件native层实现,各种功能库等,该层也集成了大量通用开源库代码。
  • java framework层
    这层包括各种系统服务和应用程序组件、控件等。
  • app层
    这层就是各种各样的app。

分析完软件架构,那么到底有那些是比较基础的呢?这里我先列出一部分:

  • 通信方式
    Android作为一个含有大量服务和应用的系统,肯定存在着进程间/线程间通信的需求,Android在通用Linux进程间通信机制(比如socket)的基础上又增加了binder机制和handler机制。
  • jni
    这属于java基础知识范畴了,Android系统中很多功能都跨越了java framework到native framework调用,因此掌握也是jni是必须的。

你可能感兴趣的:(Android基础)