当前位置: 网学 > 编程文档 > Android > 正文

Android 2.2 源码结构分析

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: myeducs.cn 发布时间: 13/03/17

【网学网提醒】:以下是网学会员为您推荐的Android 2.2 源码结构分析,希望本篇文章对您学习有所帮助。


    Google提供的Android包含了原始Android的目标机代码,主机编译工具、仿真环境,代码包经过解压缩后,第一级别的目录和文件如下所示:2.2
    .
    |–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目录用于提供AndroidJAVA应用程序运行的基础————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是SecureSocketLayer,一个网络协议层,用于为数据通讯提供安全支持。
    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
    ||–And
    roid.mk
    ||–latencytop
    ||–libpagemap
    ||–librank
    ||–procmem
    ||–procrank
    ||–showmap
    ||–showslab
    ||–sound
    ||–su
    ||–tests
    |`–timeinfo
    `–wlan
    `–ti
    
    Android2.1源码结构分析
    RockieCheng
    Android2.1
    |--Makefile
    |--bionic(bionicC库)
    |--bootable(启动引导相关代码)
    |--build(存放系统编译规则及generic等基础开发包配置)
    |--cts(Android兼容性测试套件标准)
    |--dalvik(dalvikJAVA虚拟机)
    |--development(应用程序开发相关)
    |--external(android使用的一些开源的模组)
    |--frameworks(核心框架——java及C++语言)
    |--hardware(主要保护硬解适配层HAL代码)
    |--out(编译完成后的代码输出与此目录)
    |--packages(应用程序包)
    |--prebuilt(x86和arm架构下预编译的一些资源)
    |--sdk(sdk及模拟器)
    |--system(文件系统库、应用及组件——C语言)
    `--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(动态链接器)
    `--arch(支持arm和x86两种架构)
    bootable目录
    .
    |--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(OTAOverTheAirUpdates升级工具)
    `--updater(升级器)
    build目录
    .
    |--core(核心编译规则)
    |--history(历史记录)
    |--libs
    |`--host(主机端库,有android“cp”功能替换)
    |--target(目标机编译对象)
    ||--board(开发平台)
    |||--emulator(模拟器)
    |||--generic(通用)
    |||--idea6410(自己添加的)
    ||`--sim(最简单)
    |`--product(开发平台对应的编译规则)
    |`--security(密钥相关)
    `--tools(编译中主机使用的工具及脚本)
    |--acp(Android"acp"Command)
    |--apicheck(api检查工具)
    |--applypatch(补丁工具)
    |--apriori(预链接工具)
    |--atree(tree工具)
    |--bin2asm(bin转换为asm工具)
    |--c
    heck_prereq(检查编译时间戳工具)
    |--dexpreopt(模拟器相关工具,具体功能不明)
    |--droiddoc(?作用不明,java语言,网上有人说和JDK5有关)
    |--fs_config(Thisprogramtakesalistoffilesanddirectories)
    |--fs_get_stats(获取文件系统状态)
    |--iself(判断是否ELF格式)
    |--isprelinked(判断是否prelinked)
    |--kcm(按键相关)
    |--lsd(Listsymboldependencies)
    |--releasetools(生成镜像的工具及脚本)
    |--rgb2565(rgb转换为565)
    |--signapk(apk签名工具)
    |--soslim(strip工具)
    `--zipalign(ziparchivealignmenttool)
    dalvik目录dalvik虚拟机
    .
    |--dalvikvm(main.c的目录)
    |--dexdump(dex反汇编)
    |--dexlist(ListallmethodsinallconcreteclassesinaDEXfile.)
    |--dexopt(预验证与优化)
    |--docs(文档)
    |--dvz(和zygote相关的一个命令)
    |--dx(dx工具,将多个java转换为dex)
    |--hit(?java语言写成)
    |--libcore(核心库)
    |--libcore-disabled(?禁用的库)
    |--libdex(dex的库)
    |--libnativehelper(SupportfunctionsforAndroid'sclasslibraries)
    |--tests(测试代码)
    |--tools(工具)
    `--vm(虚拟机实现)
    development目录(开发者需要的一些例程及工具)
    |--apps(一些核心应用程序)
    ||--BluetoothDebug(蓝牙调试程序)
    ||--CustomLocale(自定义区域设置)
    ||--Development(开发)
    ||--Fallback(和语言相关的一个程序)
    ||--FontLab(字库)
    ||--GestureBuilder(手势动作)
    ||--NinePatchLab(?)
    ||--OBJViewer(OBJ查看器)
    ||--SdkSetup(SDK安装器)
    ||--SpareParts(高级设置)
    ||--Term(远程登录)
    |`--launchperf(?)
    |--build(编译脚本模板
    |--cmds(有个monkey工具)
    |--data(配置数据)
    |--docs(文档)
    |--host(主机端USB驱动等)
    |--ide(集成开发环境)
    |--ndk
    (本地开发套件——c语言开发套件)
    |--pdk(PlugDevelopmentKit)
    |--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(一些工具)
    external目录
    .
    |--aes(AES加密)
    |--apache-http(网页服务器)
    |--astl(ASTL(AndroidSTL)isaslimmed-downversionoftheregularC++STL.)
    |--bison(自动生成语法分析器,将无关文法转换成C、C++)
    |--blktrace(blktraceisablocklayerIOtracingmechanism)
    |--bluetooth(蓝牙相关、协议栈)
    |--bsdiff(diff工具)
    |--bzip2(压缩工具)
    |--clearsilver(html模板系统)
    |--dbus(低延时、低开销、高可用性的IPC机制)
    |--dhcpcd(DHCP服务)
    |--dosfstools(DOS文件系统工具)
    |--dropbear(SSH2的server)
    |--e2fsprogs(EXT2文件系统工具)
    |--elfcopy(复制ELF的工具)
    |--elfutils(ELF工具)
    |--embunit(EmbeddedUnitProject)
    |--emma(java代码覆盖率统计工具)
    |--esd(EnlightenedSoundDaemon,将多种音频流混合在一个设备上播放)
    |--expat(Expatisastream-orientedXMLparser.)
    |--fdlibm(FDLIBM(FreelyDistributableLIBM))
    |--freetype(字体)
    |--fsck_msdos(dos文件系统检查工具)
    |--gdata(google的无线数据相关)
    |--genext2fs(genext2fsgeneratesanext2filesystemasanormal(non-root)use
    r)
    |--giflib(gif库)
    |--googleclient(google用户库)
    |--grub(ThisisGNUGRUB,theGRandUnifiedBootloader.)
    |--gtest(GoogleC++TestingFramework)
    |--icu4c(ICU(InternationalComponentforUnicode)在C/C++下的版本)
    |--ipsec-tools(ThispackageprovidesawaytousethenativeIPsecfunctionality)
    |--iptables(防火墙)
    |--jdiff(generateareportdescribingthedifferencebetweentwopublicJavaAPIs.)
    |--jhead(jpeg头部信息工具)
    |--jpeg(jpeg库)
    |--junit(JUnit是一个Java语言的单元测试框架)
    |--kernel-headers(内核的一些头文件)
    |--libffi(libffiisaforeignfunctioninterfacelibrary.)
    |--libpcap(网络数据包捕获函数)
    |--libpng(png库)
    |--libxml2(xml解析库)
    |--mtpd(一个命令)
    |--netcat(simpleUnixutilitywhichreadsandwritesdataacrossnetworkconnections)
    |--netperf(网络性能测量工具)
    |--neven(看代码和JNI相关)
    |--opencore(多媒体框架)
    |--openssl(SSL加密相关)
    |--openvpn(VPN开源库)
    |--oprofile(OProfile是Linux内核支持的一种性能分析机制。)
    |--ping(ping命令)
    |--ppp(pppd拨号命令,好像还没有chat)
    |--proguard(Javaclassfileshrinker,optimizer,obfuscator,andpreverifier)
    |--protobuf(aflexible,efficient,automatedmechanismforserializingstructureddata)
    |--qemu(arm模拟器)
    |--safe-iop(functionsforperformingsafeintegeroperations)
    |--skia(skia图形引擎)
    |--sonivox(soleMIDIsolutionforGoogleAndroidMobilePhonePlatform)
    |--speex(Speex编/解码API的使用(libspeex))
    |--sqlite(数据库)
    |--srec(Nuance公司提供的开源连续非特定人语音识别)
    |--strace(trace工具)
    |--svox(EmbeddedText-to-Speech)
    |--tagsoup(TagSoup是一个Java开发符合SAX的HTML解析器)
    |--tcpdump(抓TCP包的软件)
    |--tesseract(TesseractOpenSourceOCREngine.)
    |--tinyxml(TinyXmlisasimple,small,C++XMLparser)
    |--tremor(Istreamandfiledecoderprovidesanembeddable,integer-onlylibrary)
    |--webkit(浏览器核心)
    |--wpa_supplicant(无线网卡管理)
    |--xmlwriter(XML编辑工具)
    |--yaffs2(yaffs文件系统)
    `--zlib(ageneralpurposedatacompressionlibrary)
    
  • 下一篇资讯: Android 2.1 源码结构分析
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号