当前位置: 代码迷 >> Android >> Android源代码构造分析(ZT)
  详细解决方案

Android源代码构造分析(ZT)

热度:108   发布时间:2016-05-01 12:58:45.0
Android源代码结构分析(ZT)

Android源代码结构分析

Google提供的Android包含了:Android源代码,工具链,基础C库,仿真环境,开发环境等,完整的一套。
第一级别的目录和文件如下所示:
[cpp]?
----------------?
├── Makefile??????????? 全局的Makefile?
├── build?????????????? 系统编译规则和配置所需要的脚本和工具?
----------------?
├── prebuilt??????? 各种平台编译工具链?
├── bionic????????????? 基础C库源代码?
----------------?
├── frameworks *??????? Android应用程序的核心框架层(java及C++语言)?
├── system???? *??????? 底层文件系统/库/应用及组件(C语言)?
├── dalvik????????????? JAVA虚拟机?
├── external??????????? android使用的一些额外开源库?
├── libcore???????????? 与媒体播放框架代码相关?
----------------?
├── packages??????????? 各种应用程序实例?
├── development???????? 程序开发所需要的实例/模板/工具?
----------------?
├── ndk?
├── sdk?
├── cts???????????????? Android CTS兼容性规范测试用例?
----------------?
├── vendor???? *??????? 厂商定制代码?
├── device???? *??????? 厂商定制代码?
├── hardware?? *??????? 一些与硬件相关的库,部分厂家开源的硬解适配层HAL代码?
├── kernel???? *??????? Linux源代码?
├── bootable??????????? 引导加载器?
├── recovery??????????? 与目标的恢复功能相关?
----------------?

android的移植按如下流程:
(1)android linux 内核的普通驱动移植,让内核可以在目标平台上运行起来。
(2)正确挂载文件系统,确保内核启动参数和 android 源代码 system/core/rootdir 目录下的 init.rc 中的文件系统挂载正确。
(3)调试控制台,让内核启动参数中的 console 参数以及 android 源代码 system/core/init/init.c 中的console_name 设置和硬件保持一致
(4)打开 android 相关的驱动(logger,binder 等),串口输入 logcat 看 logger 驱动起来,没有的话调试logger 驱动。

解决底层问题方法:解除Android系统的耦合l
1 将Dalvik于bionic以及硬件驱动剥离开
2 修改Dalvik以支持标准glibc和GNU/Linux
3 把Dalvik当作普通应用程序
4 Dalvik可被单独优化和改进

build目录
[cpp]
.?
|-- envsetup.sh??? 是一个在使用仿真器运行的时候,用于设置环境的脚本?
|-- core????????? (核心编译规则,以mk为结尾的文Makefile件,被顶层目录的Makefile引用)?
|-- history?????? (历史记录)?
|-- libs?????????????????????????????????
|?? `-- host?????? (主机端库,有android “cp”功能替换)?
|-- target??????????? (目标机编译对象,包含board和product两个目录,为目标所需要文件)?
|?? |-- 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)?


prebuilt 目录

x86和ARM架构下工具链/预编译的一些资源
[cpp]?
.?
|-- 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平台)?


bionic 目录
基础C库源代码
[cpp]
.?
|-- Android.mk?
|-- libc????? (C库)?
|-- libdl???? (libdl实现,dl是动态链接,提供访问动态链接库的功能)?
|-- libm????? (libm数学库的实现)?
|-- libstdc++ (C++实现库libstdc++)?
|-- libthread_db? (多线程程序的调试器库)?
`-- linker???? (动态链接器)?


frameworks 目录
核心框架--java及C++语言
[cpp]?
.?
|-- 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??? (可选部分)?
|?? |-- 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 (手机类设备,一般用这个)?


system 目录

底层文件系统/库/应用及组件--C语言
[cpp]?
.?
|-- 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网卡相关工具及库)?


dalvik 目录

提供Android JAVA应用程序运行的基础--JAVA虚拟机
[cpp]?
.?
|-- 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????????????????????????? (虚拟机实现)?


external 目录

android使用的一些额外开源库
[cpp]?
.?
|-- 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 network connections)?
|-- netperf??? (网络性能测量工具)?
|-- neven??? (看代码和JNI相关)?
|-- opencore?? (多媒体框架)?
|-- openssl?? (SSL加密相关)?
|-- openvpn?? (VPN开源库)?
|-- 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)?
在external中,每个目录表示Android目标系统中的一个模块,可能有一个或者若干个库构成。其中:
  opencore为PV(PacketVideo),它是Android多媒体框架的核心。
  webkit是Android网络浏览器的核心。
  sqlite是Android数据库系统的核心。
  openssl是Secure Socket Layer,一个网络协议层,用于为数据通讯提供安全支持。


packages 目录

各种应用程序实例
[cpp]?
.?
|-- 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?? (音乐可视化,图形随音乐而变化)?
packages中包含两个目录,其中apps中是Android中的各种应用程序,providers是一些内容提供者(是内部自带的数据库源程序)。
packages中两个目录的内容大都是使用JAVA编写的程序,各个文件夹的层次结构是类似的。
作为基于SDK的开发者一般看的都是packages/apps目录下的程序实例,其中setting是我的最爱。


development 目录

开发者需要的一些例程及工具
[cpp]?
.?
|-- apps?? (一些核心应用程序)?
|?? |-- BluetoothDebug (蓝牙调试程序)?
|?? |-- CustomLocale?? (自定义区域设置)?
|?? |-- Development??? (开发)?
|?? |-- Fallback?????? (和语言相关的一个程序)?
|?? |-- FontLab??????? (字库)?
|?? |-- GestureBuilder (手势动作)?
|?? |-- NinePatchLab?? (?)?
|?? |-- OBJViewer????? (OBJ查看器)?
|?? |-- SdkSetup?????? (SDK安装器)?
|?? |-- SpareParts???? (高级设置)?
|?? |-- Term?????????? (远程登录)?
|?? `-- launchperf???? (?)?
|-- build??????? (编译脚本模板)?
|-- cmds???????? (有个monkey工具)?
|-- data???????? (配置数据)?
|-- docs???????? (文档)?
|-- emulator???? (仿真相关)?
|-- 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???????????? (一些工具)?
在emulator目录中qemud是使用QEMU仿真时目标机器运行的后台程序,skins是仿真时手机的界面。
samples中包含了很多Android简单工程,这些工程为开发者学习开发Android程序提供了很大便利,可以作为模板使用。


vendor 目录

厂家定制内容
[cpp]?
.?
|-- 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适用的图片)?


hardware 目录

一些与硬件相关的库,部分厂家开源的硬解适配层HAL代码
[cpp]?
.?
|-- 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 (qsd8k的gralloc库)?
|?? |-- 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???? (无线网卡)?


bootable 目录

引导加载器
[cpp]
|-- 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?????? (升级器)?


out 目录

Android编译完成后,将在根目录中生成一个out文件夹,所有生成的内容均放置在这个文件夹中
[cpp]?
.?
|-- CaseCheck.txt?
|-- casecheck.txt?
|-- host????????? (在主机PC host上使用的工具,包括二进制程序以及JAVA的程序)?
|??? |-- common?
|??? |? `-- obj????????? (JAVA 库)?
|??? `-- linux-x86?
|???????? |-- bin??????? (二进制程序)?
|???????? |-- framework? (JAVA 库,*.jar 文件)?
|???????? |-- lib??????? (共享库*.so)?
|???????? `-- obj??????? (中间生成的目标文件)?
`-- target??????? (在目标机(如ARMv5)上运行的内容)?
??? |-- common?????? (common表示通用的内容)?
??? |??? |-- R??????????? (资源文件)?
??? |??? |-- docs?
??? |??? `-- obj????????? (目标文件,1 APPS中包含了打成APK包的JAVA应用程序,2 JAVA_LIBRARIES中包含了JAVA的库)?
??? `-- product????? (product 中则是针对产品的内容)?
??????? `-- generic?
??????????? |-- android-info.txt?
??????????? |-- clean_steps.mk?
??????????? |-- symbols?
??????????? |-- obj?????? (obj/APPS目录中包含了各种打成了APK包的JAVA应用,obj/SHARED_LIBRARIES中存放所有动态库,obj/STATIC_LIBRARIES中存放所有静态库)?
??????????? |-- root/?
??????????? |-- ramdisk.img??? (对应于root/目录,挂载在/,)?
??????????? |-- system/?
??????????? |-- system.img??? (挂载在system/目录,包括了主要系统apps)?
??????????? |-- data/?
??????????? |-- userdata.img??? (挂载在data/目录,用户数据)?
??????????? `-- userdata-qemu.img?


SDK和NDK目录没有列出。

作为基于SDK的开发者一般看的都是packages/apps目录下的程序实例,其中setting是我的最爱。

而packages/providers是内部自带的数据库源程序。

development/是一些开发的例子,我现在正在看ndk的开发。

  相关解决方案