天天看点

Android 源码结构

Android Source Code Architecture

1. Android framework

2. Android directories

|-- bionic

Android使用开源Linux内核同时Google为Linux内核增强了不少东西,自己开发了Bionic库。首先GNU的内核在体积和运行效率上不适合移动设备,系统核心组件都是以动态库的形式驻留在每个进程中,运行效率和内存占用都是十分重要的问题。Google开发了一个自定义的库名为Bionic,以BSD许可形式开源。

|-- bootloader

Legacy, 未知

|-- build

        Android 的Makefile实际上在此目录下。

        |-- buildspec.mk.default                        //此文件注释中提到此文件为临时文件,

        |-- cleanspec.mk                //clean build

|-- core                //mk (Makefile 文件) 文件多在此目录下

|-- envsetup.sh                //用于编译Android 的脚本

|-- libs                //不太清楚

|-- target                //类似于qtopia 中QPE/device目录,关于不同target所需要的一些定义,为目标所需要文件

`-- tools                //编译过程中主机所需要的工具,一些需要经过编译生成

其中,core中的Makefile是整个Android编译所需要的真正的Makefile,它被顶层目录的Makefile引用。

envsetup.sh是一个在使用仿真器运行的时候,用于设置环境的脚本。

dalvik目录用于提供Android JAVA应用程序运行的基础————JAVA虚拟机。

development目录展开的一个级别的目录如下所示:

|-- dalvik

        Google自己的java虚拟机, 有源码。

|-- development

        在Android中运行, 用于开发中调试的工具。如Emulator上运行的,用于监视系统运行情况的程序。

|-- apps                       //Android应用程序的模板

|-- build                      //编译脚本模板

|-- cmds

|-- data

|-- docs

|-- emulator                   //模拟器相关

|-- host                       //包含windows平台的一些工具

|-- ide

|-- pdk

|-- samples                    //一些示例程序

|-- simulator                  //大多是目标机器的一些工具

`-- tools

在emulator目录中qemud是使用QEMU仿真时目标机器运行的后台程序,skins是仿真时手机的界面。

samples中包含了很多Android简单工程,这些工程为开发者学习开发Android程序提供了很大便利,可以作为模板使用。

|-- external

        非系统库,bluez, dbus, yaffs2等。有一个googleclient, 还没有看。

在external中,每个目录表示Android目标系统中的一个模块,可能有一个或者若干个库构成。其中:

opencore为PV(PacketVideo),它是Android多媒体框架的核心。

webkit是Android网络浏览器的核心。

sqlite是Android数据库系统的核心。

openssl是Secure Socket Layer,一个网络协议层,用于为数据通讯提供安全支持。

|-- frameworks                Android framework

        |-- base

        Base下的目录列表

        |-- Android.mk

|-- MODULE_LICENSE_APACHE2

|-- NOTICE

|-- awt

|-- camera

|-- cmds

|-- core

                重点。Android SDK源码在此。

|-- data

|-- docs

|-- graphics

|-- include

|-- libs

|-- location

|-- media

|-- opengl

|-- packages

|-- preloaded-classes

|-- sax

|-- services

|-- telephony

|-- test-runner

|-- tools

`-- wifi

|-- opt                //不大清楚

`-- policies        //手机运行的后台,好像管理按键消息,以及关机等

|-- hardware

        GPS, POWER, WIFI等硬件驱动

|-- kernel

        Linux kernel

|-- out                //编译出的结果放在此目录下,包括img文件以及编译好的jar库

|-- packages        //Android应用程序,SDK中已经实现的应用程序,Alarm Clock, Media Player 等, 不能直接在1.0sdk上编译,1.0的sdk中并没有source code中庫的接口

|-- prebuilt                //平台相关 windows, linux(x86)等。

|-- recovery                //不大清楚

`-- system                //adb源码在此

继续阅读