Android 源码目录结构解析

MacOS 下载 Android 源码
MacOS 10.13 编译 Android 源码
Android 源码目录结构解析
Android 手机 Root、debug 模式(修改源码方式)

前言

前边我们已经介绍如何下载源码了,下载下来后我们也不能大眼瞪小眼,你不认它,它也不认识你,那岂不就白浪费时间下载了。下载的目的一方面是为了方便我们阅读源码,另一方面我们还可以修改源码编译属于自己定制的系统嘛。这个时候了解源码的目录结构就是第一步的工作了。废话不多说,我们先看一下源码的目录结构。

目录结构

abi
art
bionic
bootable
build
cts
dalvik
developers
development
device
docs
external
frameworks
hardware
libcore
libnativehelper
ndk
out
packages
pdk
platform_testing
prebuilts
sdk
system
tools
vendor

abi(Application Binary Interface)

具体请看官方文档

art(Android runtime)

具体请看ART and Dalvik

bionic

一些基础库(以下只是列举了几个,并非全部)

libm(library math)
libc(library c):在 glibc 的基础上做了裁剪与修改的,为了规避GNU GPL等商业行为的约束
libstdc++(library standard C++):并非完整版,只做了简单支持
linker:装载链接相关库

bootable

recovery

bootable 下仅包含 recovery 此文件夹,其实就是启动 Android recovery 模式相关的代码

build

Android Build 系统,用来定制各种编译规则。主要由 makefile 组成。
比如在编译时要执行的 source build/envsetup.sh 就位于 build 下。
推荐一篇以前看过的介绍 Build 比较好的文章 理解 Android Build 系统

cts(Compatibility Test Suite)

一个自动化测试工具 CTS。确保 make 出来的系统没问题,注意如果要是修改了源码的话相关的 testcase 也是要修改的。

dalvik

dalvik 虚拟机,与 art 有千丝万缕的关系,具体也可以看 ART and Dalvik

developers

主要是一些可运行的 Android 示例项目,可以单独拉出来运行。

development

仍然是一些工具性的东西,全部子文件夹如下:

apps
build
cmds
docs
host
ide
libraries
ndk
perftests
samples
scripts
sdk
sdk_overlay
sys-img
testrunner
tools
tutorials

  • apps 中包含了一些并没有在系统中部署的应用
  • ndk 中就是和 ndk 相关的东西
  • samples 中则是一些示例 app
  • 像 MonkeyTest 相关代码位于 development/cmds/monkey 中
  • eclipse、emacs、intellij、xcode的配置信息位于 development/ide 中
    emulator, simulator, and stuff for the NDK and SDK

device

包含不同品牌手机独有的设备信息,具体目录如下:

asus
common
generic
google
htc
huawei
lge
moto
sample

docs

source.android.com

仅包含此文件夹,该文件夹下相关文件就是生成 source.android.com 站点的具体素材及代码

external

一些开源的第三方组件,这里仅列了一下大家比较熟悉的如glide、junit、okhttp、sqlite 等

aac
apache-http
bison
chromium-webview
easymock
glide
google-breakpad
google-fonts
jpeg
junit
lldb
llvm
ltrace
markdown
okhttp
opencv
proguard
protobuf
robolectric
scrypt
selinux
smali
sqlite
strace
tcpdump
valgrind
webrtc
zlib

frameworks

这就是 Android 中大家熟悉的 Frameworks,应用程序框架层啦,全部子文件夹如下:

av
base
compile
data-binding
ex
mff
minikin
ml
multidex
native
opt
rs
support
volley
webview
wilhelm

  • Android support 包 com.android.support:support-v4、v7 等都位于 frameworks/support 文件夹下
  • webview 就位于 frameworks/webview 文件夹下
  • 各种 Service,比如ActivityManagerService、SystemService、WindowManagerService、InputManagerService等就位于 frameworks/base 文件夹下
  • keystore、opengl 等也位于 frameworks/base 文件夹下

hardware

主要包含了 android HAL(硬件抽象层)相关代码。硬件抽象层介于 Linux内核驱动程序与 Android 系统之间。对 Linux 驱动进行了封装,使操作系统级别可以忽略底层实现的细节。

libcore

一些核心库

libnativehelper

JNI 相关的一些类

ndk

原生开发工具包

out

编译完后输出的所有相关文件都位于此文件夹下,包括生成的各种 img 就位于 out/target/product/hammerhead 下

packages

各种内置的 apk、ContentProvider、输入法、壁纸等,所有文件夹如下:

apps
experimental
inputmethods
providers
screensavers
services
wallpapers

  • 蓝牙、浏览器、相机、邮件、音乐、NFC 等都位于 packages/apps 下面
  • MediaProvider、DownloadProvider、MmsProvider等都位于 packages/providers 下
  • 壁纸相关位于 packages/wallpapers 下

pdk(Platform Development Kit)

平台开发套件,仅包含了一些供硬件抽象层开发使用的必要组件,供一些 OEM 厂商用来适配及测试最新的Android 系统,加快第三方厂商的更新速度。
加快OEM厂商的update速度

platform_testing

平台相关的一些测试用例

prebuilts

一些预构建成二进制的库 prebuilts
其中关于 build 时 bison 问题的主角就位于 prebuilts/misc/darwin-x86 下的 bison。

sdk

看了下里边挺多被废弃的代码,所以我也吃不准这个文件夹的意义何在,所以暂时先不写了

system

Android 的部分系统源码及一些工具,主要是在各种 java 启动程序起来前的部分。工具比如 adb、fastboot、keystore 等,其他如 mkbootimg、init 进程等。

tools

工具,近包含 fat32lib 与 gradle,具体文件目录如下

external

fat32lib
gradle

vendor

包含不同供应商的私有的二进制库,仅包含如下三个文件夹:

broadcom
lge
qcom

参考资料

elinux Master-android

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容