编译Android源码

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

Android源码目录结构

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


目录


描述


bionic


针对Android系统定制的仿生标准C库、链接器等所在目录,Android系统并没有使用Linux的glibc库,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


HAL(Hardware 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


SSH2的server


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


OProfile是Linux内核支持的一种性能分析机制


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开发符合SAX的HTML解析器


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


彩信提供器

时间: 2024-08-01 18:30:14

编译Android源码的相关文章

【转】在Ubuntu下编译Android源码并运行Emulator

原文网址:http://www.mcuos.com/thread-4553-1-1.html 建立编译环境 1.在VirtualBox上安装Ubuntu 2.安装JDK   $ sudo apt-get install sun-java5-jdk  或   $ sudo apt-get install sun-java6-jdk (donut 1.6)3.安装flex,bison,gperf,libsdl-dev,libesd0-dev,libwxgtk2.6-dev(可选),build-ess

[原]编译Android源码过程中遇到的问题

编译Android源码的过程参考Android官网介绍: 1.下载Android源码的步骤:https://source.android.com/source/downloading.html 2.编译Android源码的步骤:https://source.android.com/source/building-running.html 下面就是我遇到的一些问题: 1.Compile Android Source时JDK相关的错误: 错误1: target release 1.5 conflic

Ubuntu12.04编译Android4.0.1源码全过程-----附wubi安装ubuntu编译android源码硬盘空间不够的问题解决

本文转至  http://blog.csdn.net/yanzi1225627/article/details/9263097 昨晚在编译源码,make一段时间之后报错如下: [html] view plaincopyprint? # A fatal error has been detected by the Java Runtime Environment: # #  SIGSEGV (0xb) at pc=0x40362d33, pid=12195, tid=2835454784 # # 

编译Android源码致命错误解决方案

编译Android源码致命错误解决方案 字数1506 阅读17447 评论0 喜欢3 相信各位和我一样正在研究android内核的朋友们在经过漫长的源码下载的等待后,喜悦的拿到了源代码开始编译.可是在编译过程中,也会和下载一样出现各种各样的不顺.在这里我记录了一下本人在编译过程中的所有问题,如有疏漏,欢迎朋友们指出.下面是按照正常编译流程记录的所需步骤和操作,可能遇到的问题会在后面讲述. 步骤一:初始化编译环境 首先进入android源码所在目录,然后在Linux终端执行以下命令来完成编译初始化

【转】Ubuntu10.04上编译Android源码(Build Android source in Ubuntu10.04 Platform)

原文网址:http://blog.csdn.net/chenyafei617/article/details/6570928 一.Introduction 今天我们就来谈谈如何在Ubuntu平台上面编译android源码,我的是ubuntu10.04版本,在进行编译流程讲解之前我想讲一下 make .make snod .make kernel的作用,m.mm.mmm它们的作用以及区别. - make:                 编译源码,生成相应的系统镜像文件.             

Android介绍以及源码编译---Android源码下载

四. Android源码下载 4.1     安装repo 在home目录下建立bin文件夹 $ mkdir ~/bin $ PATH=~/bin:$PATH 安装并更改权限 $curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo $ chmod a+x ~/bin/repo 4.2     初始化repo 创建工作目录(存放源码) $ mkdir Android4.1 $ cd Android4.1

Android介绍以及源码编译--编译Android源码

一. 编译Android源码 5.1     初始化环境变量 1 $ source build/envsetup.sh 2 $ . build/envsetup.sh 3 $ lunch full-eng 5.2     编译Android系统 1 $ make –jN 其中N参数代表你计算机的线程参数,数字越大,编译速度越快,但是要看你计算机支持到什么地步. 我使用的是 $ make –j8 经过几天的编译,终于看见胜利的曙光:system.img成功生成! 5.3     运行模拟器 编译成

编译android源码报错:build/envsetup.sh: 1: Syntax error:

编译android源码时报错: build/envsetup.sh: 1: Syntax error: "(" unexpected 解决方法: 执行$sudo dpkg-reconfigure dash命令,并选择"否" 编译android源码报错:build/envsetup.sh: 1: Syntax error:

分享编译Android源码的全过程

通过参考网上的相关资料,我编译Android源码的步骤如下: 1 我的系统是Ubuntu 8.04 2 系统上必须安装以下工具(摘自网上的资料):  sudo apt-get install build-essential sudo apt-get install make  sudo apt-get install gcc  sudo apt-get install g++  sudo apt-get install libc6-dev  sudo apt-get install flex