编译Android源码

Android源码体积非常庞大,由Dalvik虚拟机、Linux内核、编译系统、框架代码、Android定制C库、测试套件、系统应用程序等部分组成,在编译Android源码之前,先掌握Android源码的组成。

Android源码目录结构

Android源码中,按照不同功能代码被放在不同的目录下:

目录

描述

bionic

针对Android系统定制的仿生标准C库、链接器等所在目录,Android系统并没有使用Linuxglibc库,bioinc C库针对嵌入式系统做了优化,添加了一些Android特定的函数API同时大大减少库的体积,也避免了LGPL版权的问题。

bootable

Android系统引导启动代码,用来引导系统、更新系统、恢复系统。

build

Android的编译系统目录,里面包含大量的Makefile,用来编译目标系统、Host主机开发环境等。

cts

兼容性测试工具目录。

dalvik

Dalvik虚拟机,Android系统得以运行的虚拟执行环境。

development

程序开发所需要的模板和工具。

external

Android系统使用的其它开源代码目录,如jpeg图片解码开源库、opencore开源代码等。

frameworks

框架层代码,frameworks/base目录下存放目标系统的框架库,frameworks/policies/base下存放应用程序框架代码。

hardware

HALHardware Abstraction Layer)硬件抽象层代码。

kernel

Linux内核目录,默认下载的Android源码里没有,需单独下载。

packages

 

Android系统级应用程序源码目录,如摄像应用、电话应用等。prebuilt


主机编译工具目录,如arm-linux-gcc交叉系统工具链等。

sdk

SDK及模拟器。

system

init进程、蓝牙、无线WIFI工具、uevent进程目录。

devices

厂商设备配置目录,针对不同设备,由不同的子目录来分别管理,用来裁剪实现不同设备上Android目标系统。

 

external目录下存放着大量的外部开源代码: 

外部开源项目

描述

 aes

AES加密

 apache-http

网页服务器

 asm

 

 bluez

蓝牙相关、协议栈

 ccache

 

 clearsilver

 

 dbus

低延时、低开销、高可用性的IPC机制

 dhcpcd

DHCP服务

 dropbear

SSH2server

 eclipse

 

 elfcopy

复制ELF的工具

 elfutils

ELF工具

 embunit

Embedded Unit Project

 emma

java代码覆盖率统计工具

 esd

Enlightened Sound Daemon,将多种音频流混合在一个设备上播放

 expat

Expat is a stream-oriented XML parser

 fdlibm

FDLIBM (Freely Distributable LIBM)

 Flex

 

 freetype

字体库

 gdata

google的无线数据相关

 diflib

 

 googleclient

google用户库

 icu4c

ICU(International Component for Unicode)C/C++下的版本

 iptables

防火墙

 Jdiff

generate a report describing the difference between two public Java APIs

 jfreechart

 

 jpeg

jpeg

 kxml2

 

 libffi

libffi is a foreign function interface library.

libpcap

网络数据包捕获函数

 libxml2

xml解析库

 make

 

 netbeans-visual

 

 netcat

simple Unix utility which reads and writes dataacross network connections

 netperf

网络性能测量工具

 neven

看代码和JNI相关

 opencore

多媒体框架

 openssl

SSL加密相关

 oprofile

OProfileLinux内核支持的一种性能分析机制

 ppp

pppd拨号命令,好像还没有chat

 protobuf

a flexible, efficient, automated mechanism for serializing structured data

 qemu

arm模拟器

 safe-iop

functions for performing safe integer operations

 sdl

 

 skia

skia图形引擎

 sonivox

sole MIDI solution for Google Android Mobile Phone Platform

 sqlite

数据库

 srec

Nuance 公司提供的开源连续非特定人语音识别

 strace

trace工具

 swing-worker

 

 swt

 

 tagsoup

TagSoup是一个Java开发符合SAXHTML解析器

 tcpdump

TCP包的软件

 tinyxml

TinyXml is a simple, small, C++ XML parser

 toolchain

 

 tremor

I stream and file decoder provides an embeddable,integer-only library

 webkit

浏览器核心

 wpa_supplicant

无线网卡管理

 yaffs2

yaffs文件系统

zlib

a general purpose data compression library

 

packages/app目录下存放着大量系统级应用程序,我们可以拿到这些应用程序代码分析、理解,编写出效率更高,性能更好的应用:

 

系统应用程序

描述

AlarmClock

闹钟

Browser

浏览器

Calculator

计算器

Calendar

日历

Camera

摄像头

Contacts

联系人

Email

邮件

GoogleSearch

Google搜索

HTML Viewer

浏览器附属界面,被浏览器应用调用,同时提供存储记录功能

IM 

即时通讯,为手机提供信号发送、接收、通信的服务

Launcher

Android的桌面

Mms

彩信业务

Music

音乐播放器

PackageInstaller

应用程序安装、卸载器

Phone

电话应用

Settings

系统设置

SoundRecorder

录音机

Stk

短信接收和发送

Sync

 同步数据

Updater

 更新

VoiceDialer

语音识别通话

 

package/providers目录下存放的是系统级内容提供器(Content Provider): 

 

系统内容提供器

描述

CalendarProvider

日历提供器

ContactsProvider  

联系人提供器

DownloadProvider

下载管理提供器

DrmProvider

DRM受保护数据存储服务,创建和更新数据库时调用

GoogleContactsProvider

谷歌联系人提供器

GoogleSubscribedFeedsProvider  

Google同步功能

ImProvider

即时通讯提供器

MediaProvider

媒体提供器、提供存储数据

SettingsProvider

系统设置提供器

SubscribedFeedsProvider

 

TelephonyProvider  

彩信提供器

 


你可能感兴趣的:(编译Android源码)