Android 5.1.1 源码目录结构

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虚拟机)
|-- 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      (厂商定制代码)     由于每个目录都有挺多代码的,这里只简单说几个:

 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                                (init.rc恢复脚本)        
|-- 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                        (开发平台)    
|   |   |-- 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        (多分辨率)   
|   |-- 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内核支持的一种性能分析机制。)    
|-- 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                        (可选部分)    
|   |-- 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        (手机类设备,一般用这个) 
     
 hardware 目录                (部分厂家开源的硬解适配层HAL代码)   
|-- 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                                (无线网卡)  
    
 packages 目录       
|-- apps                        (应用程序库)    
|   |-- BasicSmsReceiver                (简单消息接收器)    
|   |-- Bluetooth                (蓝牙)    
|   |-- Browser                (浏览器,5.1以后默认是没有的,得找高通申请才会有源码,且源码很大,得自己编译)    
|   |-- Calculator                (计算器)    
|   |-- Calendar                (日历)    
|   |-- Camera                 (相机) 
|   |-- Camera2                (相机,4.4以后都用这个,但5.1以后用的是高通蛟龙相机)
|   |-- CellBroadcastReceiver (小区广播)
|   |-- CertInstaller          (证书安装程序)    
|   |-- CMFileManager          (文件管理器)
|   |-- Contacts                (联系人)    
|   |-- ContactsCommon           (联系人)
|   |-- DeskClock                (时钟) 
|   |-- Dialer                     (拨号)   
|   |-- Email                        (邮箱)
|   |-- Exchange                   (邮箱里的exchange账号) 
|   |-- FastPowerOn                 (快速开机)
|   |-- Gallery                     (相册,和Camera类似,多了列表)    
|   |-- Gallery3D                (相册,4.4以后都用这个)      
|   |-- HTMLViewer        (浏览器附属界面,被浏览器应用调用,同时提供存储记录功能)    
|   |-- InCallUI           (来电界面)  
|   |-- KeyChain            (密钥链)  
|   |-- Launcher2                (登陆启动项,负责应用的调用)   
|   |-- LegacyCamera               (相机,一般不用)
|   |-- ManagedProvisioning       (设备配置器)
|   |-- Mms                        (短彩信业务)    
|   |-- Music                        (音乐播放器)
|   |-- MusicFX                   (音效)
|   |-- Nfc                        (NFC 服务) 
|   |-- OneTimeInitializer        (一键清理)
|   |-- PackageInstaller        (安装、卸载程序的响应)    
|   |-- PhoneCommon                 (电话)    
|   |-- Protips                   (主菜单提示)
|   |-- Provision                (预设应用的状态,使能应用)  
|   |-- QuickSearchBox         (快速查找) 
|   |-- Settings                (设置:开机设定,包括电量、蓝牙、设备信息、界面、wifi等)  
|   |-- SmartCardService       
|   |-- SnapdragonCamera     (蛟龙相机)
|   |-- SoundRecorder        (录音机)   
|   |-- SpareParts             
|   |-- SpeechRecorder     
|   |-- Stk                         (SIM卡应用)    
|   |-- Tag 
|   |-- Terminal
|   |-- Trebuchet               (5.1使用的launcher3)
|   |-- TvSettings              (Tv设置)
|   |-- UnifiedEmail          (邮箱相关)  
|   |-- VoiceDialer                (语音识别通话) 
|-- experimental   
|-- inputmethods                (输入法)    
|   |-- LatinIME                (拉丁文输入法)    
|   |-- OpenWnn                (OpenWnn日语输入法)       
|-- providers                        (提供器,提供应用程序、界面所需的数据)    
|   |-- ApplicationsProvider                (应用程序提供器,提供应用程序启动项、更新等)    
|   |-- CalendarProvider                        (日历提供器)    
|   |-- ContactsProvider                        (联系人提供器)    
|   |-- DownloadProvider                (下载管理提供器)                  
|   |-- MediaProvider                        (媒体提供器,提供存储数据) 
|   |-- PartnerBookmarksProvider            (书签提供器)
|   |-- TelephonyProvider                (彩信提供器)    
|   |-- UserDictionaryProvider        (用户字典提供器,提供用户常用字字典)    
|   |-- TvProvider    
|-- screensavers  (屏保)
|   |-- Basic    (基本互动屏保)
|   |-- PhotoTable  (照片屏保)
|   |-- WebView   ()
|-- services  
|   |-- Mms      (短彩信服务)                                          
|   |-- Telecomm                                (通话服务)    
|   |-- Telephony                        (通话服务)    
|-- wallpapers       (墙纸)        
|   |-- Basic                                        (基本墙纸,系统内置墙纸)     
|   |-- Galaxy4
|   |-- HoloSpiral 
|   |-- LivePicker                                (选择动态壁纸)        
|   |-- MagicSmoke                        (壁纸特殊效果)        
|   |-- MusicVisualization                (音乐可视化,图形随音乐而变化)
|   |-- NoiseField
|   |-- PhaseBeam 
  里面有一个隐藏的.git文件夹,内容都是一样的,没有有意义的代码,config看似乎是一个下载程序,因此认为
这些文件夹下没有实质东西。      

 prebuilt 目录                        (x86和arm架构下预编译的一些资源)        
|-- 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平台)   

 system 目录                (底层文件系统库、应用及组件——C语言)        
|-- 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网卡相关工具及库)         

 vendor 目录                        (厂家定制内容)       
|-- 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适用的图片)

以下是借鉴了网上别人的东东:

/bootable

这个目录下存放Android部分启动相关代码,包括android的recovery模式,一般用于进行OTA升级,由C++编写,可以看到用于显示的ui.cpp和安装的install.cpp,模式入口为recovery.cpp的main.
 

/build

这是android源码中编译核心所在地,把这个目录下的所有mk搞清楚,android的编译体系就基本了如指掌了.
 

./envsetup.sh

编译初始化shell脚本,编译配置命令lunch.m.mm.mmm等发源地,所以android在

编译的初始阶段需要source*,其最终目的都会执行到这个脚本,把这个脚本中的变量以及函数设置到当前终端的临时变量中,供后续使用.

由此脚本中的lunch选取product_name引入到core中的mk等一系列的初始配置,最后会打印出TARGET变量等.供源码中编译使用!

这里详情可参考Android——编译系统初始化设置


 

./core/main.mk

Make-j*时的makefile入口文件,会对编译体系中的变量进行一些校对,编译类型之类的,并且加载整个源码下的Android.mk文件,整体的编译框架,终极目标.PHONY:droid

./core/Makefile

由上面的main.mk引入,算作android真正的主makefile,由它再依赖到各个子编译体系.
 

./core/base_rules.mk

android整体编译时,会加载根目录下所有的Android.mk文件,并且根据文件中的MODULE依次分析相关属性,生成编译规则,其中不同的MODULE类型就需要在Android.mk中include$(**)加载对应mk,分别对应core目录下的mk.

比如编译apk的Android.mk需要末尾include$(BUILD_PACKAGE),此时解析到这里的时候就会加载core下的package.mk,其中会加载进Java.mk在这里会加载到base_rules.mk中计算一些变量值,创建一些基本的依赖规则,再又java.mk中调用函数$(transform-**)编译,类似:

$(transform-java-to-classes.jar)把java文件编译成classes.jar

其它模块类型类似.
 

./core/definitions.mk

这个文件下都是一些编译的函数宏定义,比如上面调用transform-java-to-classes.jar

以及常常出现在Android.mk中的all-java-files-under等等...都可在这里找到具体实现!
 

./target/product/security

这个文件下面存放的就是当前编译系统使用的签名密钥对,用于系统不同组件在编译的时候进行数字签名,android原生默认使用testkey,这目录下有README以及密钥对制作脚本make_key,可以用来制作属于自己的签名密钥,使整个系统签名独一无二,更具安全性!关于android的签名机制,详情可参考Android——编译release版签名系统


 

./tools/releasetools

Build的tools目录,全是一些用于编译的工具脚本和可执行工具,其中releasetools下是用于编译制作androidOTA刷机包时的Python脚本集合,由上面说到的主Makefile中调用进ota_from_target_files中的defmain(argv):


 

/cts

google提供的CompatibilityTest Suite (CTS) 兼容性测试组,用于测试android系统的兼容性以及稳定性,发测试report给google过了这个认证,算是得到google的认可的.一般的android源码都是有这个组件源码的,但是不在主编译流程中,需要使用makects编译出android-cts目录供使用,也可去http://source.android.com/compatibility/downloads.html下载对应版本最新的组件.作为一个android产品,这个测试还是很有意义的,


 

./tests/tests

存放CTS测试用例的地方,全是androidapk,添加自己的测试用例也在此.


 


 

./CtsTestCaseList.mk

这是cts模块组件的编译选项配置mk,由上面说到的build中的cts.mk调用,对于自己添加的测试用例需要添加进这里面的cts_test_packages变量中.


 


 

./tools/tradefed-host/src/com/android/cts/tradefed/build/CtsBuildProvider.java

可以这里看CTS_BUILD_VERSION确定你当前源码中的cts版本.


 

./tools/tradefed-host/README

google提供的readme,有介绍如何配置cts环境以及使用的常用命令


 

/device

这个作为android源码中对产品的描述文件夹,各个平台的差异还是比较大的,但是怎么改动,本意是不变的,只是作为要编译的产品的配置文件夹,这里简单以google源码中存放的samsung为例.


 

./samsung/tuna/AndroidProducts.mk

一般的存放规则是/device/厂商目录/产品目录,这个mk里面一般是定义当前产品的主配子mk,对于这个AndroidProducts.mk什么时候被加载,具体可去看android编译初始化阶段,lunch选取产品之后的一系列mk初始化操作.


 

./samsung/tuna/BoardConfig.mk

这个配置文件,看名字就知道了,定义的都是跟硬件配置相关的.这个mk依赖级别在产品角度算是最高的了,如果想添加一些控制宏,可以考虑加在这里.


 

./samsung/tuna/device.mk

这里配置最多的就是产品编译需要的组件了,一般配置最多的PRODUCT_COPY_FILES以及PRODUCT_PACKAGES,这两个变量在编译体系中的作用不多做介绍~

可参考:Android——编译安装Module的控制因素      

Android——编译体系中的【PRODUCT_COPY_FILES】【ALL_PREBUILT】【BUILD_PREBUILT】
 

./samsung/tuna/recovery.fstab

熟悉linux的对这个fstab应该比较熟悉了,这里配置的就是recovery模式下的分区,会用于制作OTA刷机包时对分区的配置参数.


 

vendorsetup.sh

一般会将产品的编译信息存在这个文件中,类似add_lunch_combofull_maguro-userdebug

在编译初始阶段由lunch加载供编译者选择,这其中full代表整体编译,maguro代表产品名,userdebug代表编译类型,android的产品编译类型可另行参考,不多做介绍~

可参考上面的Android——编译安装Module的控制因素      


 

/external

这是android存放外部工具组件的地方,以文件夹为单一模块,最终编译出来的有可执行文件,jar包,动静态库,东西比较混杂,google已经移植了很多工具在这里面,如果自己想移植一些模块进android系统,可以加在这里,写好Android.mk,在上面提到的device.mk中加入PRODUCT_PACKAGES变量中.

像这种移植可参考:Android——4.2 - 3G移植之路之usb-modeswitch (二)


 


 

/frameworks

android的运行框架集合,包含系统运行的各种服务框架,向app层提供api,根据JNI机制或者socket往下层调用,也可使用hw_get_module调用到hardware层的module.


 

./base/core

字面意思,核心所在,包含java以及jni,核心组件的java类以及native方法的jni映射,其中内容太多,比如java中app相关的ActivityManager.java,启动相关的ZygoteInit.java,其中的jni目录会被编译成libandroid_runtime.so作为android运行时的动态库供相关的java加载.


 


 

./base/services

框架层中的系统服务存放目录,包含系统时间服务以及输入子系统服务,同上java目录下就是服务的java类了,可以看到各种子服务模块,比如pm,net,display,如果想具体了解当前系统启动了多少服务,可以参考SystemServer.java


 

./opt/telephony

android电话子系统存放目录,向上提供api接口,向下通过RIL.javasocket通信.


 

/hardware

硬件抽象层,描述对linuxkernel中的相关驱动模块的具体操作,而在kernel中的驱动模块只拥有通用操作接口,比如设置寄存器值,IO拉高拉低,但是具体设置什么值,拉高拉低的时序都写在hardware层相对应的module中,这就是google对于硬件驱动的商业保护.

./libhardware/hardware.c

hardware机制核心所在,定义了相关规则,比如load打开modules编译生成的.so,抽象成一个module,向上层提供hw_get_module接口以及module配置宏.


 

./libhardware/modules

这里就是与kernel相对应的module存放的地方,头文件存在同级目录的include中,在其中定义module结构,接口方法以及唯一的moduleID.

其中像gralloc就是控制kernel中显示屏驱动的module,用于管理控制fb缓冲区,将来自上层display的SurfaceFlinger服务传下来的图像推送到lcd/led显示屏上.其它类似.

 

./ril

android电话系统的ril驱动文件目录,其中包含:

rild— ril主体控制机制,

libril— ril与上层socket通信,

reference-ril— ril与serial设备AT指令通信

这三个文件夹,其中reference-ril是第三方驱动,根据不同的设备选择不同.

关于android的RIL机制不多做介绍~

可参考:Android——RIL 机制源码分析
 


 

/system

android系统底层的文件系统,应用组件,包含一些系统库,以及启动的配置文件.


 

./core/init/init.c

作为系统启动到android层的第一个进程,也将一直作为守护进程,解析init.rc配置文件,

启动相关服务,其中就有比较常用的属性服务,之后一直运行于init进程中,具体可参考property_service.c,android层系统启动从这里开始,详情另行参考~

可参考:Android——启动过程详解

 

./core/rootdir

存放配置文件,其中init.rc作为启动配置,ueventd.rc作为linux文件系统中文件事件配置,还包含磁盘挂载所需要的vold.fstab配置文件等...


 

./core/include/private/android_filesystem_config.h

这个头文件定义了,android文件系统中文件的权限配置.


 

./vold

android舍弃了linux的udev机制,自己弄了一套磁盘挂载管理机制,就是vold,作为系统服务在init.rc配置启动,用于磁盘的挂载等相关操作,通过netlinksocket接收来自kernel的uevent,与上层MountService通过一个名为vold的socket通信,入口为main.cpp中的main函数,vold机制详情另行参考~

关于Vold机制可参考我之前的专栏:Android— 4.2 Vold

 

/out

作为android源码编译结果存放目录,其中包含各种中间文件以及目标文件.像obj中存放的中间件以及hostlinux-x86存放的本地编译项.


 

./target/product/product_name/system.img

android系统编译出来的镜像文件,也是整个源码的最终目标文件.


 

./target/product/product_name/system

编译之后的系统文件夹,也是system.img的主要构成,其中app目录下都是apk文件,android中规定此目录下的apk作为系统内置应用,在文件系统中拥有系统权限,普通用户没有权限删除更改,详情可参考PackageManager.其中的bin代表可执行文件,etc下存放的都是系统配置文件,lib中都是些动态库,分别对应到文件系统中.

 

./target/product/product_name/system/build.prop

这个文件中收集了编译中的所有属性,包括编译的主机环境,编译目标的各种配置信息等等...生成过程可参考主Makefile,在初始化阶段会被property_service服务加载,作为系统属性.

可参考:Android——build.prop 解析


 

./target/product/product_name/data/

此目录作为user的data存储目录,对应文件系统中的/data目录,平时用户安装的apk就会被copy到这个该目录的app目录下,android系统中apk所产生的数据,比如数据库等都会存放在/data/data中,以包名区分.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 第一篇 Android 系统结构和SDK 使用............................................................................................................................ 5 第1 章 Android 的系统介绍........................................................................................................................................... 5 1.1 系统介绍........................................................................................................................................................... 5 1.2 软件结构和使用的工具................................................................................................................................... 7 第2 章 Android SDK 的开发环境.................................................................................................................................. 10 2.1 Android SDK 的结构...................................................................................................................................... 10 2.2 Android SDK 环境安装.................................................................................................................................. 11 2.2.1. 安装JDK 基本Java 环境。................................................................................................................ 11 2.2.2. 安装Eclipse........................................................................................................................................... 12 2.2.3. 获得Android SDK ...............................................................................................................................12 2.2.4(1). 在Eclipse 3.4(Ganymede)中安装ADT............................................................................... 14 2.2.4(2). 在Eclipse 3.5(Galileo)中安装ADT..................................................................................... 17 2.2.5. 在Eclipse 中配置Android SDK ......................................................................................................... 20 2.3 Android 中运行仿真器环境............................................................................................................................ 21 2.3.1. 建立Android 虚拟设备....................................................................................................................... 21 2.3.2. 运行虚拟设备........................................................................................................................................ 22 2.3.3. 使用Android 中的工具....................................................................................................................... 23 2.3.4. 使用logcat............................................................................................................................................. 24 2.3.5. 使用仿真器控制.................................................................................................................................... 25 2.3.6. 命令行工具adb、mksdcard 等.......................................................................................................... 26 2.3.7. 使用设备控制........................................................................................................................................ 28 2.4 Android 中建立工程........................................................................................................................................ 29 2.4.1. 建立工程................................................................................................................................................ 29 2.4.2. 查看和编辑各个文件............................................................................................................................ 31 2.4.3. 运行工程................................................................................................................................................ 33 第二篇 Android 应用程序的概述和框架....................................................................................................................... 36 第3 章 Android 应用层程序的开发方式....................................................................................................................... 36 3.1 应用程序开发的结构....................................................................................................................................... 36 3.2 API 参考文档的使用........................................................................................................................................ 36 第4 章Android 应用程序示例........................................................................................................................................ 40 4.1 HelloActivity 程序的运行............................................................................................................................ 40 4.2 HelloActivity 的源文件结构........................................................................................................................ 41 4.2.1.Android.mk 文件................................................................................................................................. 41 4.2.2.AndroidManifest.xml 文件................................................................................................................. 42 4.2.3.源代码文件........................................................................................................................................... 42 4.2.4.布局文件............................................................................................................................................... 43 4.2.5.其他资源文件....................................................................................................................................... 43 4.3 HelloActivity 的编译结构............................................................................................................................ 43 4.4 SkeletonApp 的程序的运行........................................................................................................................ 44 4.5 SkeletonApp 的源文件结构........................................................................................................................ 44 4.6 SkeletonApp 的编译结构............................................................................................................................ 46 第5 章 Android 应用程序的内容................................................................................................................................... 47 5.1 Android 应用程序的概念性描述................................................................................................................. 47 5.1.1.应用程序的组成部分........................................................................................................................... 47 5.1.2.应用程序的生命周期........................................................................................................................... 48 5.2 应用程序包含的各个文件.............................................................................................................................50 5.3 使用am 工具启动Android 应用程序........................................................................................................ 51 2 第三篇Android 的UI 系统实现..................................................................................................................................... 53 第6 章 UI 的基本外形和控制........................................................................................................................................ 53 6.1 控件和基本事件的响应................................................................................................................................. 53 6.1.1.事件响应方法....................................................................................................................................... 54 6.1.2.第二种响应方法................................................................................................................................... 56 6.1.3.第三种响应方法................................................................................................................................... 57 6.2 键盘事件的响应............................................................................................................................................... 57 6.3 运动事件的处理............................................................................................................................................... 59 6.4 屏幕间的跳转和事件的传递........................................................................................................................... 62 6.4.1.跳转的方法........................................................................................................................................... 62 6.4.2.带有返回值的跳转...............................................................................................................................63 6.5 菜单的使用........................................................................................................................................................ 66 6.6 弹出对话框........................................................................................................................................................ 67 6.6.1. 提示信息和两个按钮的对话框............................................................................................................ 68 6.6.2. 提示信息和三个按钮的对话框............................................................................................................ 69 6.6.3. 列表项对话框........................................................................................................................................ 70 6.6.4. 单选项和按钮对话框............................................................................................................................ 70 6.6.5. 复选项和按钮对话框............................................................................................................................ 71 6.6.6. 文本的按键对话框(使用布局文件)................................................................................................ 72 6.7 样式的设置....................................................................................................................................................... 74 6.7.1.预定样式对话框................................................................................................................................... 74 6.7.2.自定义样式对话框...............................................................................................................................74 6.7.3.窗口透明样式示例...............................................................................................................................75 第7 章控件(Widget)的使用..................................................................................................................................... 78 7.1 Android 中控件的层次结构......................................................................................................................... 78 7.2 基本控件的使用............................................................................................................................................. 79 7.2.1.普通按钮............................................................................................................................................... 79 7.2.2.图像区域............................................................................................................................................... 80 7.2.3.图像按钮............................................................................................................................................... 82 7.2.4.进度条................................................................................................................................................... 83 7.2.5.多种控件............................................................................................................................................... 85 7.3 自定义的视图................................................................................................................................................... 86 第8 章视图组(ViewGroup)和布局(Layout)的使用........................................................................................... 89 8.1 Android 的屏幕元素体系................................................................................................................................ 89 8.2 几种独立使用的视图组................................................................................................................................... 90 8.2.1.网页视图............................................................................................................................................... 90 8.2.2.旋转按钮............................................................................................................................................... 91 8.2.3.文本切换器........................................................................................................................................... 93 8.2.4.图像切换器........................................................................................................................................... 94 8.3 作为简单容器使用的视图组........................................................................................................................... 95 8.3.1.单选按钮组........................................................................................................................................... 95 8.3.2.使用滚动条........................................................................................................................................... 96 8.4 布局(Layout) .............................................................................................................................................. 99 8.4.1.基本的布局内容................................................................................................................................... 99 8.4.2.线性布局(LinearLayout) ............................................................................................................. 100 8.4.3.相对布局(RelativeLayout)........................................................................................................... 101 8.4.4.表单布局(Table Layout).............................................................................................................. 103 8.5 网格(Grid)视图组................................................................................................................................... 103 3 8.6 列表(List)视图组.................................................................................................................................... 107 8.7 使用Tab 组织UI ......................................................................................................................................... 109 第9 章 2D 图形接口的使用......................................................................................................................................... 113 9.1 使用2D 图形接口的程序结构。.................................................................................................................. 113 9.2 图像、图形、文本的基本绘制..................................................................................................................... 114 9.3 文本的对齐方式............................................................................................................................................. 116 9.4 使用路径效果(PathEffect) ..................................................................................................................... 118 9.5 剪裁效果......................................................................................................................................................... 119 9.6 记录绘制的过程............................................................................................................................................. 121 9.7 动画效果......................................................................................................................................................... 123 第10 章 OpenGL 3D 图形的使用................................................................................................................................125 10.1 使用OpenGL 图形接口的程序结构。..................................................................................................... 125 10.2 基本的绘制................................................................................................................................................... 126 10.3 渲染器的实现............................................................................................................................................... 127 10.4 3D 动画效果的实现...................................................................................................................................... 129 4
目 录   第1章 Android应用与开发环境 1   1.1 Android的发展和历史 2   1.1.1 Android的发展和简介 2   1.1.2 Android平台架构及特性 3   1.2 搭建Android开发环境 5   1.2.1 下载和安装Android SDK 5   1.2.2 安装Eclipse和ADT插件 7   1.3 Android常用开发工具的用法 10   1.3.1 创建、删除和浏览AVD 10   1.3.2 使用Android模拟器   (Emulator) 14   1.3.3 使用DDMS进行调试 15   1.3.4 Android Debug Bridge(ADB)   的用法 16   1.3.5 使用DX编译Android应用 18   1.3.6 使用Android Asset Packaging   Tool(AAPT)打包资源 19   1.3.7 使用mksdcard管理虚拟SD卡 19   1.4 开始第一个Android应用 20   1.4.1 使用Eclipse开发第一个   Android应用 20   1.4.2 通过ADT运行Android应用 23   1.5 Android应用结构分析 24   1.5.1 创建一个Android应用 24   1.5.2 自动生成的R.java 26   1.5.3 res目录说明 27   1.5.4 Android应用的清单文件:   AndroidManifest.xml 28   1.5.5 应用程序权限说明 29   1.6 Android应用的基本组件   介绍 31   1.6.1 Activity和View 31   1.6.2 Service 32   1.6.3 BroadcastReceiver 32   1.6.4 ContentProvider 32   1.6.5 Intent和IntentFilter 33   1.7 本章小结 33   第2章 Android应用的界面编程 35   2.1 界面编程与视图(View)组件 36   2.1.1 视图组件与容器组件 36   2.1.2 使用XML布局文件控制UI   界面 40   2.1.3 在代码中控制UI界面 41   2.1.4 使用XML布局文件和Java   代码混合控制UI界面 42   2.1.5 开发自定义View 43   2.2 布局管理器 46   2.2.1 线性布局 47   2.2.2 表格布局 49   2.2.3 帧布局 52   2.2.4 相对布局 55   2.2.5 绝对布局 58   2.3 基本界面组件 60   2.3.1 文本框(TextView)与编辑框   (EditText)的功能和用法 60   2.3.2 按钮(Button)与图片按钮(ImageButton)组件的功能和   用法 66   2.3.3 使用9Patch图片作为按钮背景 68   2.3.4 单选按钮(RadioButton)和复选   框(CheckBox)介绍与应用 69   2.3.5 状态开关按钮(ToggleButton)   的功能与用法 71   2.3.6 时钟(AnalogClock和Digital   Clock)的功能与功法 73   2.3.7 图像视图(ImageView)的   功能和用法 75   2.4 高级界面组件 79   2.4.1 自动完成文本框(AutoCompleteTextView)的   功能和用法 79   2.4.2 Spinner的功能和用法 80   2.4.3 日期、时间选择器(DatePicker   和TimePicker)的功能和用法 83   2.4.4 进度条(ProgressBar)的   功能和用法 85   2.4.5 拖动条(SeekBar)的功能和   用法 90   2.4.6 星级评分条(RatingBar)的   功能和用法 91   2.4.7 选项卡(TabHost)的功能和   用法 93   2.4.8 滚动视图(ScrollView)的   功能和用法 95   2.4.9 列表视图(ListView和   ListActivity) 95   2.4.10 可展开的列表组件(ExpandableListView) 101   2.4.11 网格视图(GridView)和   图像切换器(ImageSwitcher)   功能和用法 104   2.4.12 画廊视图(Gallery)的功能和   用法 107   2.5 对话框 110   2.5.1 使用AlertDialog创建简单   对话框 110   2.5.2 使用AlertDialog创建列表   对话框 112   2.5.3 使用AlertDialog创建自定义   对话框 116   2.5.4 使用PopupWindow 121   2.5.5 使用DatePickerDialog、TimePickerDialog 123   2.5.6 使用ProgressDialog创建进度   对话框 125   2.6 消息提示 127   2.6.1 使用Toast显示提示信息框 128   2.6.2 Notification的功能与用法 129   2.7 菜单 132   2.7.1 选项菜单和子菜单   (SubMenu) 132   2.7.2 使用监听器来监听菜单事件 136   2.7.3 创建复选菜单项和单选菜单项 137   2.7.4 设置与菜单项关联的Activity 140   2.7.5 上下文菜单 141   2.8 本章小结 143   第3章 事件处理 144   3.1 Android的事件处理 145   3.2 基于监听的事件处理 145   3.2.1 事件监听的处理模型 145   3.2.2 事件和事件监听器 148   3.2.3 内部类作为事件监听器类 151   3.2.4 外部类作为事件监听器类 152   3.2.5 Activity本身作为事件监听器 153   3.2.6 匿名内部类作为事件监听器类 154   3.2.7 直接绑定到标签 155   3.3 基于回调的事件处理 156   3.3.1 回调机制与监听机制 156   3.3.2 基于回调的事件传播 158   3.3.3 重写onTouchEvent方法响应   触摸屏事件 160   3.4 响应的系统设置的事件 162   3.4.1 Configuration类简介 162   3.4.2 重写onConfigurationChanged   响应系统设置更改 164   3.5 Handler消息传递机制 166   3.5.1 Handler类简介 166   3.5.2 Handler使用案例 167   3.6 本章小结 168   第4章 深入理解Activity 169   4.1 建立、配置和使用Activity 170   4.1.1 建立Activity 170   4.1.2 配置Activity 177   4.1.3 启动、关闭Activity 179   4.1.4 使用Bundle在Activity之间   交换数据 181   4.1.5 启动其他Activity并返回结果 185   4.2 Activity的回调机制 189   4.3 Activity的生命周期 190   4.3.1 Activity的生命周期演示 190   4.3.2 Activity与Servlet的相似性与   区别 194   4.4 本章小结 195   第5章 使用Intent和IntentFilter   第5章 进行通信 196   5.1 Intent对象详解 197   5.1.1 使用Intent启动系统组件 197   5.2 Intent的属性及intent-filter   配置 198   5.2.1 Component属性 198   5.2.2 Action、Category属性与   intent-filter配置 200   5.2.3 指定Action、Category调用   系统Activity 204   5.2.4 Data、Type属性与intent-filter   配置 209   5.2.5 Extra属性 211   5.3 使用Intent创建Tab页面 211   5.4 本章小结 212   第6章 Android应用的资源 213   6.1 资源的类型及存储方式 214   6.1.1 资源的类型以及存储方式 214   6.1.2 使用资源 216   6.2 使用字符串、颜色、   尺寸资源 217   6.2.1 颜色值的定义 217   6.2.2 定义字符串、颜色、尺寸资源   文件 218   6.2.3 使用字符串、颜色、   尺寸资源 219   6.3 数组(Array)资源 222   6.4 使用(Drawable)资源 225   6.4.1 图片资源 225   6.4.2 StateListDrawable资源 225   6.4.3 LayerDrawable资源 227   6.4.4 ShapeDrawable资源 229   6.4.5 ClipDrawable资源 231   6.4.6 AnimationDrawable资源 233   6.5 使用原始XML资源 236   6.5.1 定义原始XML资源 236   6.5.2 使用原始XML文件 237   6.6 使用布局(Layout)资源 239   6.7 使用菜单(Menu)资源 239   6.7.1 定义菜单资源 239   6.7.2 使用菜单资源 240   6.8 样式(Style)和主题(Theme)   资源 243   6.8.1 样式资源 243   6.8.2 主题资源 245   6.9 属性(Attribute)资源 247   6.10 使用原始资源 249   6.11 国际化和资源自适应 251   6.11.1 Java国际化的思路 252   6.11.2 Java支持的语言和国家 252   6.11.3 完成程序国际化 253   6.11.4 为Android应用提供国际化   资源 255   6.11.5 国际化Android应用 256   6.12 本章小结 258   第7章 图形与图像处理 259   7.1 使用简单图片 260   7.1.1 使用Drawable对象 260   7.1.2 Bitmap和BitmapFactory 260   7.2 绘图 263   7.2.1 Android绘图基础:Canvas、   Paint等 263   7.2.2 Path类 267   7.2.3 绘制游戏动画 270   7.3 图形特效处理 278   7.3.1 使用Matrix控制变换 278   7.3.2 使用drawBitmapMesh扭曲   图像 282   7.3.3 使用Shader填充图形 285   7.4 逐帧(Frame)动画 288   7.4.1 AnimationDrawable与逐帧   动画 288   7.5 补间(Tween)动画 292   7.5.1 Tween动画与Interpolator 292   7.5.2 位置、大小、旋转度、透明度   改变的补间动画 293   7.5.3 自定义补间动画 298   7.6 使用SurfaceView实现动画 300   7.6.1 SurfaceView的绘图机制 301   7.7 本章小结 305   第8章 Android的数据存储和IO 306   8.1 使用SharedPreferences 307   8.1.1 SharedPreferences与Editor   简介 307   8.1.2 SharedPreferences的存储   位置和格式 308   8.1.3 读、写其他应用Shared   Preferences 310   8.2 File存储 311   8.2.1 openFileOutput和open   FileInput 312   8.2.2 读写SD卡上的文件 314   8.3 SQLite数据库 321   8.3.1 简介SQLiteDatabase 321   8.3.2 创建数据库和表 323   8.3.3 使用SQL语句操作SQLite   数据库 323   8.3.4 使用sqlite3工具 325   8.3.5 使用特定方法操作SQLite   数据库 327   8.3.6 事务 329   8.3.7 SQLiteOpenHelper类 330   8.4 手势(Gesture) 335   8.4.1 手势检测 335   8.4.2 增加手势 342   8.4.3 识别用户的手势 346   8.5 自动朗读(TTS) 347   8.6 本章小结 350   第9章 使用ContentProvider实现   第9章 数据共享 351   9.1 数据共享标准:   ContentProvider简介 352   9.1.1 ContentProvider简介 352   9.1.2 Uri简介 353   9.1.3 使用ContentResolver操作   数据 354   9.2 操作系统的ContentProvider 355   9.2.1 使用ContentProvider管理   联系人 355   9.2.2 使用ContentProvider管理   多媒体内容 360   9.3 实现ContentProvider 364   9.3.1 创建ContentProvider的步骤 364   9.4 监听ContentProvider的数据   改变 370   9.4.1 ContentObserver简介 370   9.5 本章小结 372   第10章 Service与Broadcast   第10章 Receiver 373   10.1 Service简介 374   10.1.1 创建、配置Service 374   10.1.2 启动和停止Service 376   10.1.3 绑定本地Service并与之   通信 377   10.1.4 Service的生命周期 381   10.2 跨进程调用Service   (AIDL服务) 382   10.2.1 AIDL服务简介 382   10.2.2 创建AIDL文件 383   10.2.3 将接口暴露给客户端 383   10.2.4 客户端访问AIDLService 385   10.3 电话管理器   (TelephonyManager) 393   10.4 短信管理器(SmsManager) 400   10.5 音频管理器   (AudioManager) 404   10.5.1 AudioManager简介 404   10.6 振动器(Vibrator) 407   10.6.1 Vibrator简介 407   10.6.2 使用Vibrator控制手机振动 407   10.7 手机闹钟服务   (AlarmManager) 408   10.7.1 AlarmManager简介 408   10.7.2 设置闹钟 409   10.8 接收广播消息 413   10.8.1 BroadcastReceiver简介 413   10.8.2 发送广播 414   10.8.3 有序广播 416   10.9 接收系统广播消息 424   10.10 本章小结 427   第11章 多媒体应用开发 428   11.1 音频和视频的播放 429   11.1.1 使用MediaPlayer播放音频 429   11.1.2 使用SoundPool播放音效 432   11.1.3 使用VideoView播放视频 435   11.1.4 使用MediaPlayer和   SurfaceView播放视频 436   11.2 使用MediaRecorder录制   音频 439   11.3 控制摄像头拍照 442   11.3.1 通过Camera进行拍照 442   11.3.2 录制视频短片 446   11.4 本章小结 450   第12章 OpenGL与3D应用开发 451   12.1 3D图像与3D开发的   基本知识 452   12.2 OpenGL和OpenGL ES简介 453   12.3 绘制2D图形 454   12.3.1 在Android应用中使用   OpenGL ES 454   12.3.2 绘制平面上的多边形 457   12.3.3 旋转 463   12.4 绘制3D图形 465   12.4.1 构建3D图形 465   12.4.2 应用纹理贴图 469   12.5 本章小结 475   第13章 Android的网络应用 476   13.1 基于TCP协议的网络通信 477   13.1.1 TCP协议基础 477   13.1.2 使用ServerSocket创建   TCP服务器端 478   13.1.3 使用Socket进行通信 479   13.1.4 加入多线程 483   13.2 使用URL访问网络资源 488   13.2.1 使用URL读取网络资源 489   13.2.2 使用URLConnection   提交请求 490   13.3 使用HTTP访问网络 496   13.3.1 使用HttpURLConnection 496   13.3.2 使用Apache HttpClient 501   13.4 使用WebView视图   显示网页 505   13.4.1 使用WebView浏览网页 506   13.4.2 使用WebView加载HTML   代码 507   13.5 使用Web Service进行   网络编程 508   13.5.1 Web Service简介 509   13.5.2 Web Service平台概述 510   13.5.3 使用Android应用调用   Web Service 512   13.6 本章小结 524   第14章 管理Android手机桌面 525   14.1 管理手机桌面 526   14.1.1 删除桌面组件 526   14.1.2 添加桌面组件 526   14.2 改变手机壁纸 527   14.2.1 开发实时壁纸   (Live Wallpapers) 528   14.3 桌面快捷方式 532   14.3.1 在桌面上创建快捷方式 532   14.3.2 向Launcher添加快捷方式 534   14.4 管理桌面小控件 535   14.5 实时文件夹(LiveFolder) 539   14.5.1 使用实时文件夹显示   ContentProvider的数据 540   14.6 本章小结 545   第15章 传感器应用开发 546   15.1 利用Android的传感器 547   15.1.1 开发传感器应用 547   15.1.2 下载和安装SensorSimulator 549   15.1.3 利用SensorSimulator开发   传感器应用 551   15.2 Android的常用传感器 553   15.2.1 方向传感器Orientation 553   15.2.2 磁场传感器Magnetic Field 554   15.2.3 温度传感器Temperature 554   15.2.4 光传感器Light 554   15.2.5 压力传感器Pressure 554   15.3 传感器应用案例 557   15.4 本章小结 564   第16章 GPS应用开发 565   16.1 支持GPS的核心API 566   16.2 获取LocationProvider 568   16.2.1 获取所有可用的   LocationProvider 568   16.2.2 通过名称获得指定   LocationProvider 569   16.2.3 根据Criteria获得   LocationProvider 569   16.3 获取定位信息 570   16.3.1 通过模拟器发送GPS信息 571   16.3.2 获取定位数据 571   16.4 临近警告 573   16.5 本章小结 575   第17章 使用Google Map服务 576   17.1 调用Google Map的准备 577   17.1.1 获取Map API Key 577   17.1.2 创建支持Google Map API的   AVD 580   17.2 根据GPS信息在地图上   定位 582   17.3 GPS导航 588   17.4 根据地址定位 590   17.4.1 地址解析与反向地址解析 590   17.4.2 根据地址定位 595   17.5 本章小结 597   第18章 疯狂连连看 598   18.1 连连看游戏简介 599   18.2 开发游戏界面 600   18.2.1 开发界面布局 600   18.2.2 开发游戏界面组件 601   18.2.3 处理方块之间的连接线 605   18.3 连连看的状态数据模型 606   18.3.1 定义数据模型 606   18.3.2 初始化游戏状态数据 606   18.4 加载界面的图片 610   18.5 实现游戏Activity 612   18.6 实现游戏逻辑 618   18.6.1 定义GameService组件接口 618   18.6.2 实现GameService组件 619   18.6.3 获取触碰点的方块 620   18.6.4 判断两个方块是否可以相连 622   18.6.5 定义获取通道的工具方法 623   18.6.6 没有转折点的横向连接 625   18.6.7 没有转折点的纵向连接 626   18.6.8 一个转折点的连接 626   18.6.9 两个转折点的连接 629   18.6.10 找出最短距离 636   18.7 本章小结 638   第19章 电子拍卖系统 639   19.1 系统功能简介和架构设计 640   19.1.1 系统功能简介 640   19.1.2 系统架构设计 641   19.2 JSON简介 643   19.2.1 使用JSON语法创建对象 643   19.2.2 使用JSON语法创建数组 644   19.2.3 Java的JSON支持 645   19.3 发送请求的工具类 646   19.4 用户登录 647   19.4.1 处理登录的Servlet 648   19.4.2 用户登录 649   19.5 查看流拍物品 655   19.5.1 查看流拍物品的Servlet 655   19.5.2 查看流拍物品 656   19.6 管理物品种类 661   19.6.1 浏览物品种类的Servlet 661   19.6.2 查看物品种类 662   19.6.3 添加种类的Servlet 666   19.6.4 添加物品种类 666   19.7 管理拍卖物品 668   19.7.1 查看自己的拍卖物品的   Servlet 668   19.7.2 查看自己的拍卖物品 669   19.7.3 添加拍卖物品的Servlet 672   19.7.4 添加拍卖物品 673   19.8 参与竞拍 678   19.8.1 选择物品种类 678   19.8.2 根据种类浏览物品的Servlet 680   19.8.3 根据种类浏览物品 680   19.8.4 参与竞价的Servlet 682   19.8.5 参与竞价 683   19.9 权限控制 688   19.10 本章小结 689
前言 第一部分 准备篇 第1章 Android开发简介 1.1 Android基本概念 1.1.1 Android简介 1.1.2 Android的系统构架 1.1.3 Android应用程序框架 1.2 OMS介绍 1.2.1 OPhone介绍 1.2.2 Widget介绍 1.3 小结 第2章 Android开发环境搭建 2.1 Android开发准备工作 2.2 开发包及其工具的安装和 配置 2.2.1 安装JDK和配置Java开发 环境 2.2.2 Eclipse的安装与汉化 2.2.3 SDK和ADT的安装和 配置 2.3 创建第一个Android项目——HeUoAndroid 2.3.1 创建HelloAndroid项目 2.3.2 运行HelloAndroid及模拟器的使用 2.3.3 调试HelloAndroid 2.4 小结 第二部分 基础篇 第3章 Android程序设计基础 3.1 Android程序框架 3.1.1 Android项目目录结构 3.1.2 Android应用解析 3.2 Android的生命周期 3.3 Android程序U设计 3.4 小结 第4章 用户界面开发 4.1 用户界面开发详解 4.1.1 用户界面简介 4.1.2 事件处理 4.2 常用控件应用 4.2.1 文本框(Textiew) 4.2.2 列表(ListView) 4.2.3 提示(T0ast) 4.2.4 编辑框(EditText) 4.2.5 单项选择(RadioGroup、RadioButton 4.2.6 多项选择(CheckBox) 4.2.7 下拉列表(Spinner) 4.2.8 自动提示(AutoComplete.TextⅥew) 4.2.9 日期和时间(DatePicker、TimePicker) 4.2.10 按钮(Button) 4.2.1l 菜单(Menu) 4.2.12 对话框(Dialog) 4.2.13 图片视图(ImageView) 4.2.14 带图标的按钮(ImageButton) 4.2.15 拖动效果(Gallery) 4.2.16 切换图片(hmgeSwilcher) 4.2.17 网格视图(GridView) 4.2.18 卷轴视图(ScrollView) 4.2.19 进度条(ProgressBar) 4.2.20 拖动条(SeekBar) 4.2.21 状态栏提示(Notification、NotificationManager) 4.2.22 对话框中的进度条(ProgressDialog) 4.3 界面布局 4.3.1 垂直线性布局 4.3.2 水平线性布局 4.3.3.相对布局(RelativeLayout) 4.3.4 表单布局(TableLayout) 4.3.5 切换卡(TabWidget) 4,4 小结 第5章 Android游戏开发 5.1 Android游戏开发框架 5.1.1 View类开发框架 5.1.2 SurfaceView类开发框架 5.2 Graphics类开发 5.5.1 Paint和Color类介绍 5.2.2 Canvas类介绍 5.2.3 几何图形绘制 5.2.4 字符串绘制 5.2.5 图像绘制 5.2.6 图像旋转 5.2.7 图像缩放 5.2.8 图像像素操作 5.2.9 Shader类介绍 5.2.10 双缓冲技术 5.2.11 全屏显示 5.2.12 获得屏幕属性 5.3 动画实现 5.3.1 Tween动画 5.3.2 Frame动画 5.3.3 GIF动画播放 5.4 小结 第6章 Android数据存储 6.1 Android数据存储初探 6.2 数据存储之Shared Preferences 6.3 数据存储之Files 6.4 数据存储之Network 6.5 Android数据库编程 6.5.1 SQLite简介 6.5.2 SQLite编程详解 6.5.3 SQLiteOpenHelper应用 6.6 数据共享(ContentProviders) 6.7 小结 第7 章多媒体开发 7.1 多媒体开发详解 7.1.1 Open Core 7.1.2 MediaPlayer 7.1.3 MediaRecorder 7.2 播放音乐 7.3 播放视频 7.4 录制歌曲 7.5 相机设置 7.6 闹钟设置 7.7 铃声设置 7.8 小结 第8章 网络与通信 8.1 网络通信基础 8.1.1 无线网络技术 8.1.2 Android网络基础 8.2 HTTP通信 8.2.1 HttpURLConnection接口 8.2.2 HttpClient接口 8.2.3 实时更新 8.3 Socket通信 8.3.
作者简介   杨丰盛,Android应用开发先驱,对Android有深入研究,实战经验极其丰富。精通Java、C、C++等语言,专注于移动通信软件开发,在机顶盒软件开发和MTK平台软件开发方面有非常深厚的积累。2007年获得中国软件行业协会游戏软件分会(CGIA)认证及国际游戏开发教育联合会国际认证。曾经领导和参与《三国群英传说》、《大航海传奇》、《美少女养成计划》等经典游戏的开发。 编辑本段 图书目录   前言   第一部分 准备篇   第1章 Android开发简介   1.1 Android基本概念   1.1.1 Android简介   1.1.2 Android的系统构架   1.1.3 Android应用程序框架   1.2 OMS介绍   1.2.1 OPhone介绍   1.2.2 Widget介绍   1.3 小结   第2章 Android开发环境搭建   2.1 Android开发准备工作   2.2 开发包及其工具的安装和配置   2.2.1 安装JDK和配置Java开发环境   2.2.2 Eclipse的安装与汉化   2.2.3 SDK和ADT的安装和配置   2.3 创建第一个Android项目——HeUoAndroid   2.3.1 创建HelloAndroid项目   2.3.2 运行HelloAndroid及模拟器的使用   2.3.3 调试HelloAndroid   2.4 小结   第二部分 基础篇   第3章 Android程序设计基础   3.1 Android程序框架   3.1.1 Android项目目录结构   3.1.2 Android应用解析   3.2 Android的生命周期   3.3 Android程序U设计   3.4 小结   第4章 用户界面开发   4.1 用户界面开发详解   4.1.1 用户界面简介   4.1.2 事件处理   4.2 常用控件应用   4.2.1 文本框(Textiew)   4.2.2 列表(ListView)   4.2.3 提示(T0ast)   4.2.4 编辑框(EditText)   4.2.5 单项选择(RadioGroup、RadioButton   4.2.6 多项选择(CheckBox)   4.2.7 下拉列表(Spinner)   4.2.8 自动提示(AutoComplete.TextⅥew)   4.2.9 日期和时间(DatePicker、TimePicker)   4.2.10 按钮(Button)   4.2.1l 菜单(Menu)   4.2.12 对话框(Dialog)   4.2.13 图片视图(ImageView)   4.2.14 带图标的按钮(ImageButton)   4.2.15 拖动效果(Gallery)   4.2.16 切换图片(hmgeSwilcher)   4.2.17 网格视图(GridView)   4.2.18 卷轴视图(ScrollView)   4.2.19 进度条(ProgressBar)   4.2.20 拖动条(SeekBar)   4.2.21 状态栏提示(Notification、NotificationManager)   4.2.22 对话框中的进度条(ProgressDialog)   4.3 界面布局   4.3.1 垂直线性布局   4.3.2 水平线性布局   4.3.3.相对布局(RelativeLayout)   4.3.4 表单布局(TableLayout)   4.3.5 切换卡(TabWidget)   4,4 小结   第5章 Android游戏开发   5.1 Android游戏开发框架   5.1.1 View类开发框架   5.1.2 SurfaceView类开发框架   5.2 Graphics类开发   5.5.1 Paint和Color类介绍   5.2.2 Canvas类介绍   5.2.3 几何图形绘制   5.2.4 字符串绘制   5.2.5 图像绘制   5.2.6 图像旋转   5.2.7 图像缩放   5.2.8 图像像素操作   5.2.9 Shader类介绍   5.2.10 双缓冲技术   5.2.11 全屏显示   5.2.12 获得屏幕属性   5.3 动画实现   5.3.1 Tween动画   5.3.2 Frame动画   5.3.3 GIF动画播放   5.4 小结   第6章 Android数据存储   6.1 Android数据存储初探   6.2 数据存储之Shared Preferences   6.3 数据存储之Files   6.4 数据存储之Network   6.5 Android数据库编程   6.5.1 SQLite简介   6.5.2 SQLite编程详解   6.5.3 SQLiteOpenHelper应用   6.6 数据共享(ContentProviders)   6.7 小结   第7 章多媒体开发   7.1 多媒体开发详解   7.1.1 Open Core   7.1.2 MediaPlayer   7.1.3 MediaRecorder   7.2 播放音乐   7.3 播放视频   7.4 录制歌曲   7.5 相机设置   7.6 闹钟设置   7.7 铃声设置   7.8 小结   第8章 网络与通信   8.1 网络通信基础   8.1.1 无线网络技术   8.1.2 Android网络基础   8.2 HTTP通信   8.2.1 HttpURLConnection接口   8.2.2 HttpClient接口   8.2.3 实时更新   8.3 Socket通信   8.3.1 Socket基础   8.3.2 Socket应用(简易聊天室)   8.4 网络通信的中文乱码问题   8.5 WebKit应用   8.5.1 WebKjt概述   8.5.2 WebView浏览网页   8.5.3 WebView与Javascript   8.6 WtFi介绍   8.7 蓝牙   8.8 小结   第9章 Android特色开发   9.1 传感器   9.2 语音识别   9.3 GoogleMap   9.3.1 GoogleMap概述   9.3.2 准备工作   9.3.3 GoogleMapAPI的使用   9.3.4 定位系统   9.4 桌面组件   9.4.1 快捷方式   9.4.2 实时文件夹   9.4.3 Widget开发   9.5 账户管理   9.6 小结   第三部分 实例篇   第10章 Android应用开发实例   10.1 情境模式   10.2 文件管理器   10.3 通讯录   10.4 音乐播放器   10.5 天气预报   10.6 个人地图   10.7 Widget日历   10.8 小结   第11 章Android游戏开发实例   11.1 手机游戏开发简介   11.2 游戏框架设计   11.3 地图设计   11.4 主角设计   11.5 图层管理器   11.6 游戏音效   11.7 游戏存档   11.8 小结   第四部分 高级篇   第12章 AndroidOpenGL开发基础   12.1 OpenGL简介   12.2 多边形   12.3 颜色   12.4 旋转   12.5 3D 空间   12.6 纹理映射   12.7 光照和事件   12.8 混合   12.9 小结   第13章 AndroidOpenGL综合应用   13.1 移动图像   13.2.3D 世界   13.3 飘动的旗帜   13.4 显示列表   13.5 雾   13.6 粒子系统   13.7 蒙版   13.8 变形   13.9 小结   第14章 游戏引擎实现   14.1 游戏引擎介绍   14.1.1 什么是引擎   14.1.2 引擎的进化   14.1.3 常见的游戏引擎   14.1.4 Android游戏引擎   14.2 游戏引擎结构   14.2.1 游戏引擎原理   14.2.2 游戏引擎定位   14.2.3 游戏引擎框架   14.3 游戏引擎设计   14.3.1 游戏引擎结构和功能设计   14.3.2 游戏引擎设计注意事项   14.4 游戏引擎实现   14.4.1 Activity类实现   14.4.2 流程控制和线程   14.4.3 游戏对象与对象管理   14.4.4 图形引擎   14.4.5 物理引擎   14.4.6 事件模块   14.4.7 工具模块   14.4.8 脚本引擎、音效模块、网络模块   14.5 小结   第15章 优化技术   15.1 优化的基本知识   15.1.1 如何书写出优秀代码   15.1.2 编程规范   15.2 程序性能测试   15.2.1 计算性能测试   15.2.2 内存消耗测试   15.3 初级优化   15.4 高级优化   15.5 Android高效开发   15.6 AndroidUI优化   15.7 其他优化   15.7.1 zipalign   15.7.2 图片优化   15.8 小结   第五部分 扩展篇   第16章 Android NDK开发   16.1 AndroidNDK简介   16.2 安装和配置NDK开发环境   16.2.1 系统和软件需求   16.2.2 NDK开发环境搭建   16.2.3 编译第一个NDK程序   16.3 AndroidNDK开发   16.3.1 JNI接口设计   16.3.2 使用C\C++实现本地方法   16.3 编译C\C++代码   16.4 AndroidNDK中使用0penGL   16.5小结   第17章 Android脚本环境   17.1 Android脚本环境简介   17.2 Android脚本环境安装   17.3如何编写Android脚本程序   17.4小结

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值