转载自: http://blog.csdn.net/jimmy54/archive/2009/12/02/4922707.aspx
写的原创,不过我估计他也是转载的,因为不全。
我从http://www.hzlitai.com.cn/bbs/viewthread.php?tid=12692又抄了一部分。
这是网友hanchao3c整理的,感谢hanchao3c的勤奋工作。
Google提供的Android手机开发平台包含了原始Android的目标机代码,主机编译工具、仿真环境,代码包经过解压缩后,第一级别的目录和文件如下所示:
.
|-- Makefile (全局的Makefile)
|-- bionic (Bionic含义为仿生,这里面是一些基础的库的源代码)
|-- bootloader (引导加载器)
|-- build (build目录中的内容不是目标所用的代码,而是编译和配置所需要的脚本和工具)
|-- dalvik (JAVA虚拟机)
|-- development (程序开发所需要的模板和工具)
|-- external (目标机器使用的一些库)
|-- frameworks (应用程序的框架层)
|-- hardware (与硬件相关的库)
|-- kernel (Linux2.6的源代码)
|-- packages (Android的各种应用程序)
|-- prebuilt (Android在各种平台下编译的预置脚本)
|-- recovery (与目标的恢复功能相关)
`-- system (Android的底层的一些库)
bionic目录展开一个级别的目录如下所示:
bionic/
|-- Android.mk
|-- libc
|-- libdl
|-- libm
|-- libstdc++
|-- libthread_db
`-- linker
bootloader目录展开的两个级别目录:
bootloader/
`-- legacy
|-- Android.mk
|-- README
|-- arch_armv6
|-- arch_msm7k
|-- fastboot_protocol.txt
|-- include
|-- libboot
|-- libc
|-- nandwrite
`-- usbloader
build目录展开的一个级别的目录如下所示:
build/
|-- buildspec.mk.default
|-- cleanspec.mk
|-- core (各种以mk为结尾的文件,它门是编译所需要的Makefile)
|-- envsetup.sh
|-- libs
|-- target (包含board和product两个目录,为目标所需要文件)
`-- tools (编译过程中主机所需要的工具,一些需要经过编译生成)
其中,core中的Makefile是整个Android编译所需要的真正的Makefile,它被顶层目录的Makefile引用。
envsetup.sh是一个在使用仿真器运行的时候,用于设置环境的脚本。
dalvik目录用于提供Android JAVA应用程序运行的基础————JAVA虚拟机。
development目录展开的一个级别的目录如下所示:
development
|-- apps (Android应用程序的模板)
|-- build (编译脚本模板)
|-- cmds
|-- data
|-- docs
|-- emulator (仿真相关)
|-- host (包含windows平台的一些工具)
|-- ide
|-- pdk
|-- samples (一些示例程序)
|-- simulator (大多是目标机器的一些工具)
`-- tools
在emulator目录中qemud是使用QEMU仿真时目标机器运行的后台程序,skins是仿真时手机的界面。
samples中包含了很多Android简单工程,这些工程为开发者学习开发Android程序提供了很大便利,可以作为模板使用。
external目录展开的一个级别的目录如下所示:
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目标系统中的一个模块,可能有一个或者若干个库构成。其中:
opencore为PV(PacketVideo),它是Android多媒体框架的核心。
webkit是Android网络浏览器的核心。
sqlite是Android数据库系统的核心。
openssl是Secure Socket Layer,一个网络协议层,用于为数据通讯提供安全支持。
frameworks目录展开的一个级别的目录如下所示:
frameworks/
|-- base
|-- opt
`-- policies
frameworks是Android应用程序的框架。
hardware是一些与硬件相关的库
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编写的程序,各个文件夹的层次结构是类似的。
prebuilt目录展开的一个级别的目录如下所示:
prebuilt/
|-- Android.mk
|-- android-arm
|-- common
|-- darwin-x86
|-- linux-x86
`-- windows
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
Android编译完成后的代码结构
Android编译完成后,将在根目录中生成一个out文件夹,所有生成的内容均放置在这个文件夹中。out文件夹如下所示:
out/
|-- CaseCheck.txt
|-- casecheck.txt
|-- host
| |-- common
| `-- linux-x86
`-- target
|-- common
`-- product
主要的两个目录为host和target,前者表示在主机(x86)生成的工具,后者表示目标机(模认为ARMv5)运行的内容。
host目录的结构如下所示:
out/host/
|-- common
| `-- obj (JAVA库)
`-- linux-x86
|-- bin (二进制程序)
|-- framework (JAVA库,*.jar文件)
|-- lib (共享库*.so)
`-- obj (中间生成的目标文件)
host目录是一些在主机上用的工具,有一些是二进制程序,有一些是JAVA的程序。
target目录的结构如下所示:
out/target/
|-- common
| |-- R (资源文件)
| |-- docs
| `-- obj (目标文件)
`-- product
`-- generic
其中common目录表示通用的内容,product中则是针对产品的内容。
在common目录的obj中,包含两个重要的目录:
APPS 中包含了JAVA应用程序生成的目标,每个应用程序对应其中一个子目录,将结合每个应用程序的原始文件生成Android应用程序的APK包。
JAVA_LIBRARIES 中包含了JAVA的库,每个库对应其中一个子目录。
在默认的情况下,Android编译将生成generic目录,如果选定产品还可以生成其他的目录。generic包含了以下内容:
out/target/product/generic/
|-- android-info.txt
|-- clean_steps.mk
|-- data
|-- obj
|-- ramdisk.img
|-- root
|-- symbols
|-- system
|-- system.img
|-- userdata-qemu.img
`-- userdata.img
在generic/obj/APPS目录中包含了各种JAVA应用,与common/APPS相对应,但是已经打成了APK包。
system目录是主要的文件系统,data目录是存放数据的文件系统。
obj/SHARED_LIBRARIES中存放所有动态库。
obj/STATIC_LIBRARIES中存放所有静态库。
几个以img为结尾的文件是几个目标映像文件,其中ramdisk是作为内存盘的根文件系统映像,system.img是主要文件系统的映像,这是一个比较大的文件,data.img是数据内容映像。这几个image文件是运行时真正需要的文件。
分享到:
相关推荐
"安卓Android源码——zz-doctor中医大夫助理信息系统.zip" 这个标题揭示了我们正在处理一个与安卓(Android)操作系统相关的项目,具体是一个名为"zz-doctor中医大夫助理信息系统"的应用程序的源代码。这个应用可能...
【标题】"安卓Android源码——zz-doctor中医大夫助理信息系统(简化版).zip" 提供的是一个基于Android平台的医疗应用源代码,主要针对中医大夫的助手系统。这个简化版可能包含了一些基本功能,旨在帮助中医大夫进行...
《Android应用源码zz-doctor中医大夫助理信息系统详解》 在深入探讨Android应用源码zz-doctor中医大夫助理信息系统之前,我们先理解一下这个项目的背景和目标。此项目旨在为中医大夫提供一个辅助信息系统,通过...
《zz-doctor中医大夫助理信息系统》是一款基于Android平台的应用程序,其源码是学习和研究JAVA ANDROID技术的宝贵资源,特别适合于进行毕业设计和代码学习。此应用旨在为中医大夫提供辅助工作,帮助他们更高效地管理...
该系统简化版的源码是为学习和交流目的而提供的,适合对JAVA ANDROID编程感兴趣,尤其是正在进行毕业设计或者希望通过代码学习提升技能的开发者。 该应用的核心知识点主要包括以下几个方面: 1. **Android开发环境...
"android应用开发代码大全"提供了一套完整的源代码集合,旨在帮助开发者深入理解和实践Android开发技术,特别是针对LBS(Location-Based Services)和Rss的集成应用,以及如何构建一个实用的北京地铁系统应用。...
这个压缩包中的“zz7”可能是一个源代码文件,但没有明确的文件扩展名,因此无法提供具体的代码示例。不过,你可以通过解压并查看源码来学习这两个功能的具体实现。同时,"本源码使用帮助.txt"和"更多源码打包下载....
在实际项目中,你会看到AndroidManifest.xml(应用配置文件)、src目录(源代码)、res目录(资源文件)、build.gradle(构建脚本)等关键组件。 通过这个项目,你不仅会学习到Android应用的基本架构和开发流程,还...
而“zz7”可能是某种文件或源代码的一部分,但由于缺少具体信息,我们无法详细解释。 总之,这个DEMO虽然可能不完美,但它为Android开发者提供了一种实践操作数据库和角标功能的机会,这对于理解Android文件系统和...
唯一的文件名是 "安卓开发-zz-doctor中医大夫助理信息系统(简化版).zip",这可能是一个包含源代码、资源文件、文档和其他相关材料的压缩包。解压后,开发者可以查看项目的结构,包括AndroidManifest.xml(应用配置...
- **ARKit与ARCore**:苹果公司的ARKit和谷歌的ARCore是目前主流的移动设备AR开发框架,适用于iOS和Android平台。 - **Vuforia引擎**:Vuforia是一款专门用于AR开发的软件开发工具包(SDK),提供了丰富的图像识别和...
在Android开发中,GridView继承自AbsListView,它会自动把数据源(如ArrayList)中的元素按照指定的列数进行布局。你可以通过Adapter来定制每个单元格的内容和样式,Adapter是连接数据源和视图的关键。 1. GridView...
- **ARKit/ARCore**:苹果和谷歌分别推出的AR开发框架,它们为iOS和Android设备提供了一套完整的AR解决方案,能够实现精准的位置追踪和环境理解等功能。 #### 四、“AR博物馆解密”项目解析 ##### 4.1 项目背景 ...