Android系统架构和SDK目录结构
本文转载至http://blog.****.net/zhangqiang_0/article/details/77987927
疯狂Android讲义学习笔记:
Android系统的底层建立在Linux系统之上,该平台由操作系统、中间件、用户界面和应用软件4层组成,它采用一种被称为软件叠层(Software Stack)的方式进行构建。这种软件叠层结构使得层与层之间相互分离,明确各层的分工。这种分工保证了层与层之间的低耦合,当下层的层内或层下发生改变时,上层应用程序无需任何改变。
Android5.x平台架构及特性
Android系统主要由5部分组成:
- 应用程序层:
- Android系统包含的一系列的核心应用程序。
- 应用程序框架:
- Android应用框架提供了大量API,除了可作为应用程序开发的基础之外,也是软件复用的重要手段,任何一个应用程序都可发布它的功能模块----只要发布时遵守了框架的约定,那么其他应用程序就可使用这个功能模块。
- 函数库:
-
- Android包含一套被不同组件所使用的C/C++库的集合。一般来说,Android应用开发者不能直接调用这套C/C++库集,但它可以通过上面的应用程序框架来调用这些库。例如:
- 系统C库
- 媒体库
- Surface Manager:管理对显示子系统的访问,并可以对多个应用程序的2D和3D图层提供无缝缝合。
- LibWebCore:一个全新的Web浏览器引擎
- SGL:底层的2D图形引擎。
- 3D libraries:基于OpenGL ES API实现的3D系统,这套3D库即可使用硬件3D加速(如果硬件系统支持),也可使用高度优化的软件3D加速。
- FreeType:位图和向量字体显示。
- SQLite:供所用应用程序使用的功能强大的轻量级关系数据库。
- Android运行时:
- Android运行时由两部分组成(Android核心库集和ART)。其中核心库集提供了Java语言核心库所能使用的绝大部分功能,而虚拟机则负责运行Android应用程序。
- Android5.0以前的Android运行时由Dalvik虚拟机和Android核心库集组成,但由于Dalvik虚拟机采用了一种被称为JIT(just-in-time)的解释器进行动态编译并执行,因此导致Android APP运行时缓慢;而ART模式则是在用户安装APP是进行预编译(Ahead-of-time,简称AOT),将原来在程序运行时的编译动作提前到应用安装时,这样使得程序在运行时可以减少动态编译的开销,从而提升Android App的运行效率。
- 反过来,由于ART需要在安装APP时进行AOT处理,因此ART需要占用更多的存储空间,应用安装和系统启动时间会延长不少。
- 除此之外,ART还支持ARM、x86和MIPS架构,并且能完全兼容64位系统
- Linux内核
- Android系统建立在Linux2.6之上。Linux内核提供了安全性、内存管理、进程管理、网络协议栈和驱动模型等核心系统服务。除此之外,Linux内核也是系统硬件和软件叠层之间的抽象层。
SDK文件结构:
SDK根目录下:
- add-ons:
- 该目录下存放附加库,比如GoogleMaps,当然你如果安装了OphoneSDK,这里也会有一些类库在里面。
- 又说:该目录下存放第三方公司为Anddroid平台开发的附加功能系统。
- 又说:保存Google API。比如GoogleMaps.
- build-tools:各个版本的与编译相关的重要工具,比如aapt、aidl、逆向调试工具dexdump和编译脚本dx。
- docs:
- 离线开发者文档Android SDK API参考文档。
- emulator:
- 模拟器
- extras:
- 拓展开发包,这里面包括向下兼容开发包以及Intel硬件加速程序等。
- 扩展开发包 如高版本的API在低版本中的开发使用。
- license:
- 执照,许可
- ndk-bundle:
- 束,捆 包袱
- patcher:
- 补丁包
- platforms:
- 该目录下存放不同版本的Android系统。
- platforms是每个平台的SDK真正的文件,里面会根据API Level划分SDK版本,这里就以Android2.3来说,进入后有一个android-10的文件夹,android-10进入后是Android2.3 SDK的主要文件,其中data保存着一些系统资源,images是模拟器映像文件,skins则是Android模拟器的皮肤,templates是工程创建的默认模板,android.jar则是该版本的主要framework文件。
- platforms-tools:
- 各版本SDK通用工具。比如adb.exe、sqlite3.exe。
- samples:
- 各版本API使用样例。Android SDK自带的默认示例工程。
- Android SDK自带的默认示例工程,里面的apidemos强烈推荐初学者运行学习,对于SQLite数据库操作可以查看NotePad这个例子,对于游戏开发Snake、LunarLander都是不错的例子,对于Android主题开发Home则是android m5时代的主题设计原理。
- skins:
- sources:
- 系统源码目录,文件夹里可以包含多份源码,根据API Level划分为不同的文件夹。
- 各版本SDK源码。
- system-images:
- 系统镜像文件
- 模拟器影映像文件。从android-14开始将模拟器映像文件整理在这里(原来放在platforms下)
- temp:
- 临时文件夹,一般在SDK更新安装时用到。
- tools:
- 该目录下存放大量Android开发、调试的工具。如:emulator.exe monitor.bat android.bat(.bat批处理,内部是shell脚本)
- AVD Manager.exe:
- 该程序是AVD(Android虚拟设备)管理器。通过该工具可以管理AVD。
- Android手机模拟配置工具,用于配置模拟器。只有先配置AVD才可运行模拟器。
- SDK Manager.exe:
- 该程序是Android SDK(Software Development Kit)。
- SDK管理器,用于SDK更新、下载、删除。