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小时内删除。
发表评论