Android5.1.1源码⽬录结构
最近公司培训新同事,我负责整理⼀点关于android的基础知识,遥想当年,刚接触android,也是⼀头雾⽔,
啥都不懂,就是靠看⽂档和视频,对android有⼀个初步了解,然后就通过查看源码,才有更深⼊的了解。android有成千上万,说太少了,是成百万上亿的代码,当然要全部都了解是不可能的,所以要有⼀套⾃⼰的
⽅法来理解和查看代码。学习android,对代码框架结构的了解是必不可少的,其实现在6.0的代码都已经出来了,但是上⽹查了下,没⼈写过5.1的代码结构,我在这⾥来补充下:
先看下截图:
Android 5.1.1
|-- bootable    (启动引导相关代码)
|-- Makefile
|-- abi  (applicationbinary interface,应⽤程序⼆进制接⼝,⽣成libgabi++.so相关库⽂件)
|-- art (google在4.4后加⼊⽤来代替Dalvik的运⾏时)
|-- bionic (Android的C library,即C库⽂件)
|-- bootable    (启动引导相关代码)
|-- build        (存放系统编译规则及generic等基础开发配置包)
|-- cts        (Android兼容性测试套件标准)
|-- dalvik      (dalvik JAVA虚拟机)
makefile phony
|-- developers (开发者⽤,存放⼏个例⼦)
|-- development  (开发者需要的⼀些例程及⼯具)
|-- device (设备相关代码,这是各⼚商需要配置和修改的代码)
|-- docs (介绍开源相关⽂档)
|-- external    (android使⽤的⼀些开源的模组)
|-- frameworks  (核⼼框架——java及C++语⾔)
|-- hardware  (部分⼚家开源的硬解适配层HAL代码)
|-- kernel (驱动内核相关代码)
|-- libcore (核⼼库相关)
|-- libnativehelper (JNI⽤到的库)
|-- ndk (ndk相关)
|-- out      (编译完成后的代码输出⽬录)
|-- packages  (应⽤程序包)
|-- pdk (google⽤来减少碎⽚化的东西)
|-- prebuilt    (x86和arm架构下预编译的⼀些资源)
|-- sdk      (sdk及模拟器)
|-- tools (⼯具)
|-- system      (底层⽂件系统库、应⽤及组件——C语⾔)
|-- vendor      (⼚商定制代码)由于每个⽬录都有挺多代码的,这⾥只简单说⼏个:
|-- vendor      (⼚商定制代码)由于每个⽬录都有挺多代码的,这⾥只简单说⼏个:
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                        (动态链接器)
|-- benchmarks      bootable ⽬录
|-- bootloader
|  |-- lk
|-- recovery                                (系统恢复相关)
|-- applypatch                          (补丁⼯具)
|-- edify                                (升级脚本使⽤的edify脚本语⾔)
|-- fonts
|-- minadbd
|-- etc                                (恢复脚本)
|-- minui                                (⼀个简单的UI)
|-- minzip                                (⼀个简单的压缩⼯具)
|-- mtdutils                        (mtd⼯具)
|-- res                                (资源)
|  |-- images                        (⼀些图⽚)
|-- tools                                (⼯具)
|-- tests
|  |-- ota                        (OTA Over The Air Updates升级⼯具)
|-- uncrypt  (⼀些权限相关的代码)
|-- updater (更新相关)
build⽬录
|-- core                                (核⼼编译规则)
|-- history                                (历史记录)
|-- libs
|  |-- host                        (主机端库,有android “cp”功能替换)
|-- target                                (⽬标机编译对象)
|  |-- board                        (开发平台)
|  |-- board                        (开发平台)
|  |  |-- emulator        (模拟器)
|  |  |-- generic                (通⽤)
|  |  |-- idea6410        (⾃⼰添加的)
|  |  |-- sim                (最简单)
|  |-- product                (开发平台对应的编译规则)
|      |-- security        (密钥相关)
|-- tools                                (编译中主机使⽤的⼯具及脚本)
|-- acp                        (Android "acp" Command)
|-- apicheck                (api检查⼯具)
|-- atree                        (tree⼯具)
|-- check_prereq        (检查编译时间戳⼯具)
|-- droiddoc                (?作⽤不明,java语⾔,⽹上有⼈说和JDK5有关)
|-- fs_config (This program takes a list of files and directories)
|-- fs_get_stats                (获取⽂件系统状态)
|-- releasetools                (⽣成镜像的⼯具及脚本)
|-- rgb2565                (rgb转换为565)
|-- signapk                (apk签名⼯具)
|-- zipalign    (zip archive alignment tool)      dalvik⽬录 dalvik虚拟机
|-- dexdump                        (dex反汇编)
|-- dexgen
|-- dexlist        (List all methods in all concrete classes in a DEX file.)
|-- docs                                (⽂档)
|-- dx                                (dx⼯具,将多个java转换为dex)
|-- hit                                (?java语⾔写成)
|-- opcode-gen
|-- tools                                (⼯具)
|-- vm                                (虚拟机实现)      development ⽬录(开发者需要的⼀些例程及⼯具)  |-- apps                    (⼀些核⼼应⽤程序)|  |-- BluetoothDebug        (蓝⽛调试程序)
|  |-- BuildWidget          (版本号相关)
|  |-- CustomLocale        (⾃定义区域设置)
|  |-- Development        (开发)
|  |-- DevelopmentSettings (开发设置)
|  |-- Fallback            (回调)
|  |-- GestureBuilder        (⼿势动作)
|  |-- launchperf
|  |-- NinePatchLab        (点九图⽚相关)
|  |-- OBJViewer                (OBJ查看器)
|  |-- SdkSetup                (SDK安装器)
|  |-- SettingInjectorSample                (⾼级设置)
|  |-- WidgetPreview                        (预览⼩部件)
|-- build                                (编译脚本模板)
|-- cmds                                (有个monkey⼯具)
|-- docs                                (⽂档)
|-- host                                (主机端USB驱动等)
|-- ide                                (集成开发环境)
|-- libraries                            (库)
|-- ndk                                (本地开发套件——c语⾔开发套件)
|-- perftests
|-- samples                        (例程)
|  |-- AliasActivity        (?)
|  |-- ApiDemos                (API演⽰程序)
|  |-- BluetoothChat        (蓝⽛聊天)
|  |-- BrowserPlugin        (浏览器插件)
|  |-- BusinessCard        (商业卡)
|  |-- Compass                (指南针)
|  |-- ContactManager        (联系⼈管理器)
|  |-- CubeLiveWallpaper        (动态壁纸的⼀个简单例程)
|  |-- FixedGridLayout        (像是布局)
|  |-- GlobalTime                (全球时间)
|  |-- HelloActivity        (Hello)
|  |-- Home                        (Home)
|  |-- JetBoy                        (jetBoy游戏)
|  |-- LunarLander        (貌似⼜是⼀个游戏)
|  |-- MailSync                (邮件同步)
|  |-- MultiResolution        (多分辨率)
|  |-- MultiResolution        (多分辨率)
|  |-- MySampleRss        (RSS)
|  |-- NotePad                (记事本)
|  |-- RSSReader                (RSS阅读器)
|  |-- SearchableDictionary        (⽬录搜索)
|  |-- SimpleJNI                (JNI例程)
|  |-- SkeletonApp        (空壳APP)
|  |-- Snake                        (snake程序)
|  |-- SoftKeyboard        (软键盘)
|  |-- Wiktionary                (?维基)
|  |-- WiktionarySimple(?维基例程)
|-- scripts                                (脚本)
|-- sdk                                (sdk配置)
|-- sdk_overlay
|-- sys-img |-- testrunner                        (测试⽤)
|-- tools                                (⼀些⼯具)
|-- tutorials    external ⽬录
|-- aes                        (AES加密)
|-- apache-http                (⽹页服务器)
|-- astl  (ASTL (Android STL) is a slimmed-down version of the regular C++ STL.)
|-- bison                        (⾃动⽣成语法分析器,将⽆关⽂法转换成C、C++)
|-- blktrace                (blktrace is a block layer IO tracing mechanism)
|-- bluetooth                (蓝⽛相关、协议栈)
|-- bsdiff                        (diff⼯具)
|-- bzip2                        (压缩⼯具)
|-- clearsilver                (html模板系统)
|-- dbus                        (低延时、低开销、⾼可⽤性的IPC机制)
|-- dhcpcd                (DHCP服务)
|-- dosfstools                (DOS⽂件系统⼯具)
|-- dropbear                (SSH2的server)
|-- 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 networkconnections)|-- netperf                        (⽹络性能测量⼯具)
|-- neven                        (看代码和JNI相关)
|-- opencore                (多媒体框架)
|-- openssl                (SSL加密相关)
|-- openvpn                (VPN开源库)
|-- oprofile                (OProfile是Linux内核⽀持的⼀种性能分析机制。)
|-- oprofile                (OProfile是Linux内核⽀持的⼀种性能分析机制。)
|-- 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开发符合SAX的HTML解析器)
|-- 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 ⽬录(核⼼框架——java及C++语⾔)
|-- base                        (基本内容)
|  |-- api                (?都是xml⽂件,定义了java的api?)
|  |-- awt                (AWT库)
|  |-- build                (空的)
|  |-- camera                (摄像头服务程序库)
|  |-- cmds                (重要命令:am、app_proce等)
|  |-- core                (核⼼库)
|  |-- data                (字体和声⾳等数据⽂件)
|  |-- docs                (⽂档)
|  |-- graphics        (图形相关)
|  |-- include                (头⽂件)
|  |-- keystore        (和数据签名证书相关)
|  |-- libs                (库)
|  |-- location        (地区库)
|  |-- media                (媒体相关库)
|  |-- obex                (蓝⽛传输库)
|  |-- opengl                (2D-3D加速库)
|  |-- packages        (设置、TTS、VPN程序)
|  |-- sax                (XML解析器)
|  |-- services        (各种服务程序)
|  |-- telephony        (电话通讯管理)
|  |-- test-runner        (测试⼯具相关)
|  |-- tests                (各种测试)
|  |-- tools                (⼀些叫不上名的⼯具)
|  |-- vpn                (VPN)
|  |-- wifi                (⽆线⽹络)
|-- opt                        (可选部分)
|  |-- le.android                                (有个framework.jar)
|  |-- lelogin                (有个client.jar)
|  |-- emoji                (standard message elements)
|-- policies (Product policies are operating system directions aimed at specific uses)
|-- base
|-- mid        (MID设备)
|-- phone        (⼿机类设备,⼀般⽤这个)
hardware ⽬录(部分⼚家开源的硬解适配层HAL代码)
|-- broadcom                        (博通公司)
|  |-- wlan                        (⽆线⽹卡)
|-- libhardware                        (硬件库)
|  |-- include                        (头⽂件)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。