文档章节

android源代码结构分析

雨焰
 雨焰
发布于 2013/06/14 10:12
字数 4243
阅读 846
收藏 5

一、源代码结构

第一层次目录

Google提供的Android包含了原始Android的目标机代码,主机编译工具、仿真环境,代码包经过解压缩后,第一级别的目录和文件如下所示:

  .

  |-- Makefile (全局的Makefile

  |-- bionic Bionic含义为仿生,这里面是一些基础的库的源代码)

  |-- bootloader (引导加载器),我们的是bootable

  |-- build build目录中的内容不是目标所用的代码,而是编译和配置所需要的脚本和工具)

  |-- dalvik JAVA虚拟机)

  |-- development (程序开发所需要的模板和工具)

  |-- external (目标机器使用的一些库)

  |-- frameworks (应用程序的框架层)

  |-- hardware (与硬件相关的库)

  |-- kernel Linux2.6的源代码)

  |-- packages Android的各种应用程序)

  |-- prebuilt Android在各种平台下编译的预置脚本)

  |-- recovery (与目标的恢复功能相关)

  `-- system Android的底层的一些库)

bionic目录

bionic C

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

  bionic/

  |-- Android.mk

  |-- libc

  |-- libdl

  |-- libm

  |-- libstdc++

  |-- libthread_db

  `-- linker

  

bionic 目录
|-- libc                        
C库)
|   |-- arch-arm        
ARM架构,包含系统调用汇编实现)
|   |-- arch-x86        
x86架构,包含系统调用汇编实现)
|   |-- bionic                
(由C实现的功能,架构无关)
|   |-- docs                
(文档)
|   |-- include                
(头文件)
|   |-- inet                
(?inet相关,具体作用不明)
|   |-- kernel                
Linux内核中的一些头文件)
|   |-- netbsd                
(?nesbsd系统相关,具体作用不明)
|   |-- private                
(?一些私有的头文件)
|   |-- stdio                
stdio实现)
|   |-- stdlib                
stdlib实现)
|   |-- string                
string函数实现)
|   |-- tools                
(几个工具)
|   |-- tzcode                
(时区相关代码)
|   |-- unistd                
unistd实现)
|   `-- zoneinfo        
(时区信息)
|-- libdl                        
libdl实现,dl是动态链接,提供访问动态链接库的功能)
|-- libm                        
libm数学库的实现,)
|   |-- alpha                
apaha架构)
|   |-- amd64                
amd64架构)
|   |-- arm                
arm架构)
|   |-- bsdsrc                
(?bsd的源码)
|   |-- i386                
i386架构)
|   |-- i387                
i387架构?)
|   |-- ia64                
ia64架构)
|   |-- include                
(头文件)
|   |-- man                
(数学函数,后缀名为.3,一些为freeBSD的库文件)
|   |-- powerpc        
powerpc架构)
|   |-- sparc64                
sparc64架构)
|   `-- src                
(源代码)
|-- libstdc++                
libstdc++ C++实现库)
|   |-- include                
(头文件)
|   `-- src                
(源码)
|-- libthread_db        
(多线程程序的调试器库)
|   `-- include                
(头文件)
`-- linker                        
(动态链接器)
`-- arch                
(支持armx86两种架构)

bootloader目录

启动引导相关代码


bootloader目录展开的两个级别目录:

  bootloader/

  `-- legacy

  |-- Android.mk

  |-- README

  |-- arch_armv6

  |-- arch_msm7k

  |-- fastboot_protocol.txt

  |-- include

  |-- libboot

  |-- libc

  |-- nandwrite

  `-- usbloader


bootable 目录

.
|-- bootloader                                
(适合各种bootloader的通用代码)
|   `-- legacy                                
(估计不能直接使用,可以参考)
|       |-- arch_armv6                
V6架构,几个简单的汇编文件)
|       |-- arch_msm7k                
(高通7k处理器架构的几个基本驱动)
|       |-- include                        
(通用头文件和高通7k架构头文件)
|       |-- libboot                        
(启动库,都写得很简单)
|       |-- libc                        
(一些常用的c函数)
|       |-- nandwrite                
nandwirte函数实现)
|       `-- usbloader                
usbloader实现)
|-- diskinstaller                        
android镜像打包器,x86可生产iso
`-- recovery                                
(系统恢复相关)
    |-- edify                                
(升级脚本使用的edify脚本语言)
    |-- etc                                
init.rc恢复脚本)
    |-- minui                                
(一个简单的UI
    |-- minzip                                
(一个简单的压缩工具)
    |-- mtdutils                        
mtd工具)
    |-- res                                
(资源)
    |   `-- images                        
(一些图片)
    |-- tools                                
(工具)
    |   `-- ota                        
OTA Over The Air Updates升级工具)
`-- updater                        
(升级器)

build目录

存放系统编译规则及generic等基础开发包配置


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

  build/

  |-- buildspec.mk.default

  |-- cleanspec.mk

  |-- core (各种以mk为结尾的文件,它门是编译所需要的Makefile

  |-- envsetup.sh

  |-- libs

  |-- target (包含boardproduct两个目录,为目标所需要文件)

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

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

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

  

build目录
|-- core                                
(核心编译规则)
|-- history                                
(历史记录)
|-- libs                                
|   `-- host                        
(主机端库,有android “cp”功能替换)
|-- target                                
(目标机编译对象)
|   |-- board                        
(开发平台)
|   |   |-- emulator        
(模拟器)
|   |   |-- generic                
(通用)
|   |   |-- idea6410        
(自己添加的)
|   |   `-- sim                
(最简单)
|   `-- product                
(开发平台对应的编译规则)
|       `-- security        
(密钥相关)
`-- tools                                
(编译中主机使用的工具及脚本)
    |-- acp                        
Android "acp" Command
    |-- apicheck                
api检查工具)
    |-- applypatch                
(补丁工具)
    |-- apriori                        
(预链接工具)
    |-- atree                        
tree工具)
    |-- bin2asm                
bin转换为asm工具)
    |-- check_prereq        
(检查编译时间戳工具)
    |-- dexpreopt                
(模拟器相关工具,具体功能不明)
    |-- droiddoc                
(?作用不明,java语言,网上有人说和JDK5有关)
    |-- fs_config                
This program takes a list of files and directories
    |-- fs_get_stats                
(获取文件系统状态)
    |-- iself                        
(判断是否ELF格式)
    |-- isprelinked                
(判断是否prelinked
    |-- kcm                        
(按键相关)
    |-- lsd                        
List symbol dependencies
    |-- releasetools                
(生成镜像的工具及脚本)
    |-- rgb2565                
rgb转换为565
    |-- signapk                
apk签名工具)
    |-- soslim                        
strip工具)
`-- zipalign                
zip archive alignment tool

dalvik目录

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

  dalvik目录 dalvik虚拟机

.

|-- dalvikvm                  main.c的目录)

|-- dexdump                  dex反汇编)

|-- dexlist                      List all methods in all concrete classes in a DEX file.

|-- dexopt                            (预验证与优化)

|-- docs                        (文档)

|-- dvz                          (和zygote相关的一个命令)

|-- dx                           dx工具,将多个java转换为dex

|-- hit                           (?java语言写成)

|-- libcore                            (核心库)

|-- libcore-disabled         (?禁用的库)

|-- libdex                       dex的库)

|-- libnativehelper           Support functions for Android's class libraries

|-- tests                        (测试代码)

|-- tools                        (工具)

`-- vm                          (虚拟机实现)


development目录

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

  development

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

  |-- build (编译脚本模板)

  |-- cmds

  |-- data

  |-- docs

  |-- emulator (仿真相关)

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

  |-- ide

  |-- pdk

  |-- samples (一些示例程序)

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

  `-- tools

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

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


development 目录                (开发者需要的一些例程及工具)
|-- apps                                
(一些核心应用程序)
|   |-- BluetoothDebug        
(蓝牙调试程序)
|   |-- CustomLocale        
(自定义区域设置)
|   |-- Development        
(开发)
|   |-- Fallback                
(和语言相关的一个程序)
|   |-- FontLab                
(字库)
|   |-- GestureBuilder        
(手势动作)
|   |-- NinePatchLab        
(?)
|   |-- OBJViewer                
OBJ查看器)
|   |-- SdkSetup                
SDK安装器)
|   |-- SpareParts                
(高级设置)
|   |-- Term                        
(远程登录)
|   `-- launchperf                
(?)
|-- build                                
(编译脚本模板)
|-- cmds                                
(有个monkey工具)
|-- data                                
(配置数据)
|-- docs                                
(文档)
|-- host                                
(主机端USB驱动等)
|-- ide                                
(集成开发环境)
|-- ndk                                
(本地开发套件——c语言开发套件)
|-- pdk                                
Plug Development Kit
|-- samples                        
(例程)
|   |-- AliasActivity        
(?)
|   |-- ApiDemos                
API演示程序)
|   |-- BluetoothChat        
(蓝牙聊天)
|   |-- BrowserPlugin        
(浏览器插件)
|   |-- BusinessCard        
(商业卡)
|   |-- Compass                
(指南针)
|   |-- ContactManager        
(联系人管理器)
|   |-- CubeLiveWallpaper        
(动态壁纸的一个简单例程)
|   |-- FixedGridLayout        
(像是布局)
|   |-- GlobalTime                
(全球时间)
|   |-- HelloActivity        
Hello
|   |-- Home                        
Home
|   |-- JetBoy                        
jetBoy游戏)
|   |-- LunarLander        
(貌似又是一个游戏)
|   |-- MailSync                
(邮件同步)
|   |-- MultiResolution        
(多分辨率)
|   |-- MySampleRss        
RSS
|   |-- NotePad                
(记事本)
|   |-- RSSReader                
RSS阅读器)
|   |-- SearchableDictionary        
(目录搜索)
|   |-- SimpleJNI                
JNI例程)
|   |-- SkeletonApp        
(空壳APP
|   |-- Snake                        
snake程序)
|   |-- SoftKeyboard        
(软键盘)
|   |-- Wiktionary                
(?维基)
|   `-- WiktionarySimple
(?维基例程)
|-- scripts                                
(脚本)
|-- sdk                                
sdk配置)
|-- simulator                        
(?模拟器)
|-- testrunner                        
(?测试用)
`-- tools                                
(一些工具)

external目录

android使用的一些开源的模组


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

  external/

  |-- aes

  |-- apache-http

  |-- bluez

  |-- clearsilver

  |-- dbus

  |-- dhcpcd

  |-- dropbear

  |-- elfcopy

  |-- elfutils

  |-- emma

  |-- esd

  |-- expat

  |-- fdlibm

  |-- freetype

  |-- gdata

  |-- giflib

  |-- googleclient

  |-- icu4c

  |-- iptables

  |-- jdiff

  |-- jhead

  |-- jpeg

  |-- libffi

  |-- libpcap

  |-- libpng

  |-- libxml2

  |-- netcat

  |-- netperf

  |-- neven

  |-- opencore

  |-- openssl

  |-- oprofile

  |-- ping

  |-- ppp

  |-- protobuf

  |-- qemu

  |-- safe-iop

  |-- skia

  |-- sonivox

  |-- sqlite

  |-- srec

  |-- strace

  |-- tagsoup

  |-- tcpdump

  |-- tinyxml

  |-- tremor

  |-- webkit

  |-- wpa_supplicant

  |-- yaffs2

  `-- zlib

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

  opencorePVPacketVideo),它是Android多媒体框架的核心。

  webkitAndroid网络浏览器的核心。

  sqliteAndroid数据库系统的核心。

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

  

external 目录
.
|-- aes    
AES加密)
|-- apache-http   
(网页服务器)
|-- astl    
ASTL (Android STL) is a slimmed-down version of the regular C++ STL.
|-- bison    
(自动生成语法分析器,将无关文法转换成CC++
|-- blktrace   
blktrace is a block layer IO tracing mechanism
|-- bluetooth   
(蓝牙相关、协议栈)
|-- bsdiff    
diff工具)
|-- bzip2    
(压缩工具)
|-- clearsilver   
html模板系统)
|-- dbus    
(低延时、低开销、高可用性的IPC机制)
|-- dhcpcd   
DHCP服务)
|-- dosfstools   
DOS文件系统工具)
|-- dropbear   
SSH2server
|-- e2fsprogs   
EXT2文件系统工具)
|-- 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)
|-- freetype   
(字体)
|-- fsck_msdos   
dos文件系统检查工具)
|-- gdata    
google的无线数据相关)
|-- genext2fs   
genext2fs generates an ext2 filesystem as a normal (non-root) user
|-- giflib    
gif库)
|-- googleclient 
google用户库)
|-- grub    
This is GNU GRUB, the GRand Unified Bootloader.
|-- gtest    
Google C++ Testing Framework
|-- icu4c    
ICU(International Component for Unicode)C/C++下的版本)
|-- ipsec-tools   
This package provides a way to use the native IPsec functionality 
|-- iptables   
(防火墙)
|-- jdiff    
generate a report describing the difference between two public Java APIs.
|-- jhead    
jpeg头部信息工具)
|-- jpeg    
jpeg库)
|-- junit    
JUnit是一个Java语言的单元测试框架)
|-- kernel-headers 
(内核的一些头文件)
|-- libffi    
libffi is a foreign function interface library.
|-- libpcap   
(网络数据包捕获函数)
|-- libpng    
png库)
|-- libxml2   
xml解析库)
|-- mtpd    
(一个命令)
|-- netcat    
simple Unix utility which reads and writes dataacross network connections
|-- netperf    
(网络性能测量工具)
|-- neven    
(看代码和JNI相关)
|-- opencore   
(多媒体框架)
|-- openssl   
SSL加密相关)
|-- openvpn   
VPN开源库)
|-- oprofile   
OProfileLinux内核支持的一种性能分析机制。)
|-- ping    
ping命令)
|-- ppp    
pppd拨号命令,好像还没有chat
|-- proguard   
Java class file shrinker, optimizer, obfuscator, and preverifier
|-- protobuf   
a flexible, efficient, automated mechanism for serializing structured data
|-- qemu    
arm模拟器)
|-- safe-iop   
functions for performing safe integer operations 
|-- skia    
skia图形引擎)
|-- sonivox   
sole MIDI solution for Google Android Mobile Phone Platform
|-- speex    
Speex/解码API的使用(libspeex)
|-- sqlite    
(数据库)
|-- srec    
Nuance 公司提供的开源连续非特定人语音识别)
|-- strace    
trace工具)
|-- svox    
Embedded Text-to-Speech
|-- tagsoup   
TagSoup是一个Java开发符合SAXHTML解析器)
|-- tcpdump   
(抓TCP包的软件)
|-- tesseract   
Tesseract Open Source OCR Engine.
|-- tinyxml   
TinyXml is a simple, small, C++ XML parser
|-- tremor    
I stream and file decoder provides an embeddable,integer-only library
|-- webkit    
(浏览器核心)
|-- wpa_supplicant 
(无线网卡管理)
|-- xmlwriter   
XML 编辑工具)
|-- yaffs2    
yaffs文件系统)
`-- zlib    
a general purpose data compression library

frameworks目录

核心框架——javaC++语言?


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

  frameworks/

  |-- base

  |-- opt

  `-- policies


  frameworksAndroid应用程序的框架。

  

frameworks 目录 (核心框架——javaC++语言)
.
|-- base    
(基本内容)
|   |-- api   
(?都是xml文件,定义了javaapi?)
|   |-- awt   
AWT库)
|   |-- build   
(空的)
|   |-- camera   
(摄像头服务程序库)
|   |-- cmds   
(重要命令:amapp_proce等)
|   |-- core   
(核心库)
|   |-- data   
(字体和声音等数据文件)
|   |-- docs   
(文档)
|   |-- graphics 
(图形相关)
|   |-- include   
(头文件)
|   |-- keystore 
(和数据签名证书相关)
|   |-- libs   
(库)
|   |-- location 
(地区库)
|   |-- media   
(媒体相关库)
|   |-- obex   
(蓝牙传输库)
|   |-- opengl   
2D-3D加速库)
|   |-- packages 
(设置、TTSVPN程序)
|   |-- sax   
XML解析器)
|   |-- services 
(各种服务程序)
|   |-- telephony 
(电话通讯管理)
|   |-- test-runner 
(测试工具相关)
|   |-- tests   
(各种测试)
|   |-- tools   
(一些叫不上名的工具)
|   |-- vpn   
VPN
|   `-- wifi   
(无线网络)
|-- opt    
(可选部分)
|   |-- com.google.android     
(有个framework.jar
|   |-- com.google.android.googlelogin   
(有个client.jar
|   `-- emoji   
standard message elements
`-- policies   
Product policies are operating system directions aimed at specific uses
    `-- base  
        |-- mid 
MID设备)
        `-- phone 
(手机类设备,一般用这个)


Hardware

是一些与硬件相关的库

  

部分厂家开源的硬解适配层HAL代码


hardware 目录   (部分厂家开源的硬解适配层HAL代码)
|-- broadcom    
(博通公司)
|   `-- wlan    
(无线网卡)
|-- libhardware    
(硬件库)
|   |-- include    
(头文件)
|   `-- modules   
Default (and possibly architecture dependents) HAL modules
|       |-- gralloc   
gralloc显示相关)
|       `-- overlay   
Skeleton for the "overlay" HAL module.
|-- libhardware_legacy 
(旧的硬件库)
|   |-- flashlight   
(背光)
|   |-- gps    
GPS
|   |-- include    
(头文件)
|   |-- mount    
(旧的挂载器)
|   |-- power    
(电源)
|   |-- qemu    
(模拟器)
|   |-- qemu_tracing 
(模拟器跟踪)
|   |-- tests    
(测试)
|   |-- uevent    
uevent
|   |-- vibrator    
(震动)
|   `-- wifi    
(无线)
|-- msm7k    
(高通7k处理器开源抽象层)
|   |-- boot    
(启动)
|   |-- libaudio   
(声音库)
|   |-- libaudio-qsd8k 
qsd8k的声音相关库)
|   |-- libcamera   
(摄像头库)
|   |-- libcopybit   
copybit库)
|   |-- libgralloc   
gralloc库)
|   |-- libgralloc-qsd8k 
qsd8kgralloc库)
|   |-- liblights   
(背光库)
|   `-- librpc    
RPC库)
|-- ril     
(无线电抽象层)
|   |-- include    
(头文件)
|   |-- libril    
(库)
|   |-- reference-cdma-sms 
cdma短信参考)
|   |-- reference-ril    
ril参考)
|   `-- rild     
ril后台服务程序)
`-- ti       
ti公司开源HAL
    |-- omap3     
omap3处理器)
    |   |-- dspbridge   
DSP桥)
    |   |-- libopencorehw 
opencore硬件库)
    |   |-- liboverlay   
overlay硬件库)
    |   |-- libstagefrighthw 
stagefright硬件库)
    |   `-- omx    
omx组件)
    `-- wlan     
(无线网卡)


Out

编译完成后的代码输出与此目录


Kernel

Linux2.6的源代码

  

packages目录

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

  packages/

  |-- apps

  | |-- AlarmClock

  | |-- Browser

  | |-- Calculator

  | |-- Calendar

  | |-- Camera

  | |-- Contacts

  | |-- Email

  | |-- GoogleSearch

  | |-- HTMLViewer

  | |-- IM

  | |-- Launcher

  | |-- Mms

  | |-- Music

  | |-- PackageInstaller

  | |-- Phone

  | |-- Settings

  | |-- SoundRecorder

  | |-- Stk

  | |-- Sync

  | |-- Updater

  | `-- VoiceDialer

  `-- providers

  |-- CalendarProvider

  |-- ContactsProvider

  |-- DownloadProvider

  |-- DrmProvider

  |-- GoogleContactsProvider

  |-- GoogleSubscribedFeedsProvider

  |-- ImProvider

  |-- MediaProvider

  `-- TelephonyProvider

  packages中包含两个目录,其中apps中是Android中的各种应用程序,providers是一些内容提供者(在Android中的一个数据源)。

  packages中两个目录的内容大都是使用JAVA编写的程序,各个文件夹的层次结构是类似的。

  

packages 目录
.
|-- apps     
(应用程序库)
|   |-- AlarmClock   
(闹钟)
|   |-- Bluetooth   
(蓝牙)
|   |-- Browser   
(浏览器)
|   |-- Calculator   
(计算器)
|   |-- Calendar   
(日历)
|   |-- Camera    
(相机)
|   |-- CertInstaller   
(在Android中安装数字签名,被调用)
|   |-- Contacts   
(拨号(调用)、联系人、通话记录)
|   |-- DeskClock   
(桌面时钟)
|   |-- Email    
Email
|   |-- Gallery    
(相册,和Camera类似,多了列表)
|   |-- Gallery3D   
(?3D相册)
|   |-- GlobalSearch 
(为google搜索服务,提供底层应用)
|   |-- GoogleSearch 
google搜索)
|   |-- HTMLViewer 
(浏览器附属界面,被浏览器应用调用,同时提供存储记录功能)
|   |-- IM    
(即时通讯,为手机提供信号发送、接收、通信的服务)
|   |-- Launcher   
(登陆启动项,显示图片框架等等图形界面)
|   |-- Launcher2   
(登陆启动项,负责应用的调用)
|   |-- Mms    
(?彩信业务)
|   |-- Music    
(音乐播放器)
|   |-- PackageInstaller 
(安装、卸载程序的响应)
|   |-- Phone    
(电话拨号程序)
|   |-- Provision   
(预设应用的状态,使能应用)
|   |-- Settings   
(开机设定,包括电量、蓝牙、设备信息、界面、wifi等)
|   |-- SoundRecorder 
(录音机,可计算存储所需空间和时间)
|   |-- Stk     
(接收和发送短信)
|   |-- Sync    
(空)   -------○1
|   |-- Updater   
(空)
|   `-- VoiceDialer   
(语音识别通话)
|-- inputmethods   
(输入法)
|   |-- LatinIME   
(拉丁文输入法)
|   |-- OpenWnn   
OpenWnn输入法)
|   `-- PinyinIME   
(拼音输入法)
|-- providers    
(提供器,提供应用程序、界面所需的数据)
|   |-- ApplicationsProvider   
(应用程序提供器,提供应用程序启动项、更新等)
|   |-- CalendarProvider    
(日历提供器)
|   |-- ContactsProvider    
(联系人提供器)
|   |-- DownloadProvider   
(下载管理提供器)
|   |-- DrmProvider    
(创建和更新数据库时调用)
|   |-- GoogleContactsProvider 
(联系人提供器的子类,用以同步联系人)
|   |-- GoogleSubscribedFeedsProvider
(设置信息提供器)
|   |-- ImProvider     
(空)
|   |-- ManagementProvider   
(空)
|   |-- MediaProvider    
(媒体提供器,提供存储数据)
|   |-- TelephonyProvider   
(彩信提供器)
|   |-- UserDictionaryProvider 
(用户字典提供器,提供用户常用字字典)
|   `-- WebSearchProvider   
(空)
|-- services     
|   |-- EasService     
(空)
|   `-- LockAndWipe    
(空)
`-- wallpapers      
(墙纸)
    |-- Basic      
(基本墙纸,系统内置墙纸)
    |-- LivePicker     
(选择动态壁纸)
    |-- MagicSmoke    
(壁纸特殊效果)
    `-- MusicVisualization   
(音乐可视化,图形随音乐而变化)

prebuilt目录

x86arm架构下预编译的一些资源


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

  prebuilt/

  |-- Android.mk

  |-- android-arm

  |-- common

  |-- darwin-x86

  |-- linux-x86

  `-- windows


prebuilt 目录    (x86arm架构下预编译的一些资源)
.
|-- android-arm   
arm-android相关)
|   |-- gdbserver   
gdb调试器)
|   `-- kernel    
(模拟的arm内核)
|-- android-x86   
x86-android相关)
|   `-- kernel    
(空的)
|-- common    
(通用编译好的代码,应该是java的)
|-- darwin-x86    
drawin x86平台)
|   `-- toolchain   
(工具链)
|       |-- arm-eabi-4.2.1 
|       |-- arm-eabi-4.3.1 
|       `-- arm-eabi-4.4.0 
|-- darwin-x86_64   
drawin x86 64bit平台)
|-- linux-x86    
linux x86平台)
|   `-- toolchain   
(工具链,我们应该主要用这个)
|       |-- arm-eabi-4.2.1 
|       |-- arm-eabi-4.3.1 
|       |-- arm-eabi-4.4.0 
|       `-- i686-unknown-linux-gnu-4.2.1 
x86版编译器)
|-- linux-x86_64   
linux x86 64bit平台)
|-- windows    
windows平台)
`-- windows-x86_64 
64bit windows平台)

 

SDK

 sdk及模拟器

system目录

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

  system/

  |-- bluetooth

  | |-- bluedroid

  | `-- brfpatch

  |-- core

  | |-- Android.mk

  | |-- README

  | |-- adb

  | |-- cpio

  | |-- debuggerd

  | |-- fastboot

  | |-- include (各个库接口的头文件)

  | |-- init

  | |-- libctest

  | |-- libcutils

  | |-- liblog

  | |-- libmincrypt

  | |-- libnetutils

  | |-- libpixelflinger

  | |-- libzipfile

  | |-- logcat

  | |-- logwrapper

  | |-- mkbootimg

  | |-- mountd

  | |-- netcfg

  | |-- rootdir

  | |-- sh

  | `-- toolbox

  |-- extras

  | |-- Android.mk

  | |-- latencytop

  | |-- libpagemap

  | |-- librank

  | |-- procmem

  | |-- procrank

  | |-- showmap

  | |-- showslab

  | |-- sound

  | |-- su

  | |-- tests

  | `-- timeinfo

  `-- wlan

  `-- ti


system 目录   (底层文件系统库、应用及组件——C语言)
.
|-- Bluetooth   
(蓝牙相关)
|-- core    
(系统核心工具盒接口)
|   |-- adb   
adb调试工具)
|   |-- cpio   
cpio工具,创建img
|   |-- debuggerd 
(调试工具)
|   |-- fastboot 
(快速启动相关)
|   |-- include   
(系统接口头文件)
|   |-- init   
init程序源代码)
|   |-- libacc   
(轻量级C编译器)
|   |-- libctest   
libc测试相关)
|   |-- libcutils 
libc工具)
|   |-- liblog   
log库)
|   |-- libmincrypt 
(加密库)
|   |-- libnetutils 
(网络工具库)
|   |-- libpixelflinger 
(图形处理库)
|   |-- libsysutils 
(系统工具库)
|   |-- libzipfile 
zip库)
|   |-- logcat   
(查看log工具)
|   |-- logwrapper 
log封装工具)
|   |-- mkbootimg 
(制作启动boot.img的工具盒脚本)
|   |-- netcfg   
(网络配置netcfg源码)
|   |-- nexus   
google最新手机的代码)
|   |-- rootdir   
rootfs,包含一些etc下的脚本和配置)
|   |-- sh    
shell代码)
|   |-- toolbox   
toolbox,类似busybox的工具集)
|   `-- vold   
SD卡管理器)
|-- extras    
(额外工具)
|   |-- latencytop 
a tool for software developers identifying system latency happen
|   |-- libpagemap 
pagemap库)
|   |-- librank   
Java Library Ranking System库)
|   |-- procmem 
pagemap相关)
|   |-- procrank 
Java Library Ranking System相关)
|   |-- showmap 
showmap工具)
|   |-- showslab 
showslab工具)
|   |-- sound   
(声音相关)
|   |-- su    
su命令源码)
|   |-- tests   
(一些测试工具)
|   `-- timeinfo 
(时区相关)
`-- wlan    
(无线相关)
    `-- ti    
ti网卡相关工具及库)



Vendor

厂商定制代码


vendor 目录    (厂家定制内容)

|-- aosp     android open source project
|   `-- products   
(一些板级规则)
|-- htc     
HTC公司)
|   |-- common-open 
(通用部分)
|   |   `-- akmd   
(解压img用的工具)
|   |-- dream-open   
G1开放部分)
|   |-- prebuilt-open 
(预编译开放部分)
|   `-- sapphire-open 
sapphire这款型号开放内容)
|-- pv-open    
(没东西)
|-- qcom     
(里面基本是空的)
`-- sample    
google提供的样例)
    |-- apps    
(应用)
    |   |-- client   
(用户)
    |   `-- upgrade 
(升级)
    |-- frameworks   
(框架)
    |   `-- PlatformLibrary 
(平台库)
    |-- products   
(产品)
    |-- sdk_addon   
sdk添加部分)
    `-- skins    
(皮肤)
        `-- WVGAMedDpi 
WVGA适用的图片)

本文转载自:http://goo.gl/YSH0J

雨焰
粉丝 58
博文 255
码字总数 46691
作品 0
新乡
程序员
私信 提问
Android系统源代码分析步骤

目前,互联网行业正在朝着移动互联网方向强劲地发展,而移动互联网的发展离不开背后的移动平台的支撑。众所周知,如今在移动平台市场上,苹果的iOS、谷歌的Android和微软的Windows Phone系统...

紫地瓜
2012/11/19
0
0
把Android源代码加入SDK

各位调试Android程序的时候遇到“source not found”错误应该很抓狂吧,Goolge在发布SDK时没有把源代码包含进去着实有点让人费解,对很多人来说Git无疑是个生涩的东西,而 framework中所有J...

黄平俊
2009/07/09
25.3K
7
android手机打电话代码分析

Linux手机打电话代码分析(Android) Android 2009-03-16 17:02 阅读705 评论0 字号: 大大 中中 小小 Android源代码分析之电话功能 RIL 根据:《Android 源码分析-打电话和发短信》一文(时...

迷糊
2009/10/10
7.7K
1
转载:最强最全干货分享:Android开发书籍、教程、工具等

最全干货分享,本文收集整理了Android开发所需的书籍、教程、工具、资讯和周刊各种资源,它们能让你在Android开发之旅的各个阶段都受益。 入门 《Learning Android(中文版)》 本书为Andro...

拉偶有所依
2015/01/09
152
3
最强最全干货分享:Android开发书籍、教程、工具等

最全干货分享,本文收集整理了Android开发所需的书籍、教程、工具、资讯和周刊各种资源,它们能让你在Android开发之旅的各个阶段都受益。 入门 《Learning Android(中文版)》 本书为Andro...

拉偶有所依
2015/01/09
0
1

没有更多内容

加载失败,请刷新页面

加载更多

利用mybatis generator生成实体类、Mapper接口以及对应的XML文件

项目中通常会遇到数据的持久化,如果是采用mybatis的orm,就会涉及到生成xml的问题,刚好mybatis官网提供了这么个插件MyBatis Generator,效果简直是棒呆。 1. 首先需要在build.gradle文件中...

啊哈关关
今天
2
0
SpringSocial相关的知识点

使用SprigSocial开发第三方登录 核心类 ServiceProvider(AbstractOauth2ServiceProvider):主要负责实现server提供商(例如QQ,微信等共有的东西),默认实现类是AbstractOauth2ServiceProvider...

chendom
今天
1
0
Java并发之AQS详解

一、概述   谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)!   类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源...

群星纪元
昨天
2
0
Fabric-sdk-java最新教程

Fabric Java SDK是Fabric区块链官方提供的用于Java应用开发的SDK,全称为Fabric-sdk-java,网上可用资料不多,本文列出了精心整理的针对Fabric Java SDK的最新精选教程。 如果希望快速掌握F...

汇智网教程
昨天
2
0
react 子组件监听props 变化

componentWillReceiveProps //已经被废弃 getDerivedStateFromProps// 推荐使用//如果条件不存在必须要返回null static getDerivedStateFromProps(props, current_stat...

一箭落旄头
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部