第1章Android的BSP和子系统开发
1.1 Android板级支持工作概述
↘1.1.1 Android的开放源代码工程和BSP
Android是一个开放源代码的系统,基于Android的开源代码,可以构建各种系统,并可以适配到任何支持的硬件平台上。
BSP(Board Support Package)的含义为板级支持包,通常表示某个系统的特定的硬件支持部分。从系统结构上,某一个硬件相关的软件系统可以分成通用部分和BSP部分。前者与硬件无关,后者与硬件相关。
AOSP(Android Open-Source Project)的含义为Android开放源代码工程。Google官方的Android代码和相关内容都是开放的,其网站为:http://source.android.com/。
AOSP的大部分工程采用了Apache协议(Apache License)。Apache协议鼓励代码共享和尊重原作者的著作权,同样允许代码修改。Apache协议也是对商业应用的友好许可,使用者也可以在需要时修改代码满足需要并作为开源或商业产品发布或销售。
各个基于Android的设备基本都是直接或间接地从Android的开源工程获取源代码,然后加入针对特定硬件的BSP部分,由此构建了自己的软件部分。
↘1.1.2 Android的系统结构
Android系统虽然庞大,但是具有清晰的软件层次结构。按照自下而上的结构,Android的软件系统分成4个层次,如图1-1所示。
图1-1 Android系统的层次结构
第一层:操作系统(Linux kernel)。Android系统基于Linux操作系统,第一层次为Linux内核和相关驱动。不同的硬件平台使用不同的内核。
第二层:库(Libraries)和运行环境(Android Runtime)。包括本地的各个C语言和C++库,可能来自开源工程或者Android原生的。运行环境包括C++语言实现的虚拟机(Dalvik Virtual Machine)和Java核心类(Core Libraries)。
第三层:应用程序框架(Application Framework)。Android原创Java框架层由几个Java库组成。
第四层:应用程序(Applications)。由Java代码、资源文件、工程描述文件生成的各个单独的应用程序包。
从BSP开发的角度来说,重点在Android系统较下层,Android系统软件的运行基础是需要适配系统的硬件,在软件方面主要的工作是Linux内核中的硬件驱动程序(第一层),以及Android本地层当中的硬件抽象层或者适配层(第二层)。