最近开始自行学习Android开发,在CSDN博客记录学习笔记以表决心,同样便于日后复习查阅。
————chuanBo.Wei
一、Android创始人为Andy Rubin(美),后被谷歌收购。
二、Android系统的底层是建立在Linux系统之上的,由操作系统、中间件、用户界面和应用软件四层组成,采用软件叠层的方式进行构建(低耦合)。
三、Android的系统架构(这是谷歌官方经典的图片,大致了解,后面会慢慢理解的)
1.Applications(应用程序层):该层提供一些核心应用程序包,例如电子邮件、短信、日历、地图、浏览器和联系人管理等。这些应用程序都是用Java语言编写的,并且这些应用程序都是可以被开发人员开发的其他应用程序所替换,这点不同于其他手机操作系统固化在系统内部的系统软件,更加灵活和个性化。同时,开发者可以利用Java语言设计和编写属于自己的应用程序,而这些程序与那些核心应用程序彼此平等、友好共处。
2.Application Framework(应用程序框架层):提供一个开放的开发平台。开发者可以完全访问,也是Andriod上层应用开发者所关注的。包括下面的内容:
- Activity Manager(活动管理器)- 管理各个应用程序生命周期以及通常的导航回退功能
- Window Manager(窗口管理器)- 管理所有的窗口程序
- Content Provider(内容提供器)- 使得不同应用程序之间存取或者分享数据
- View System(视图系统)- 构建应用程序的基本组件
- Notification Manager(通告管理器) - 使得应用程序可以在状态栏中显示自定义的提示信息
- Package Manager(包管理器) - Android系统内的程序管理
- Telephony Manager(电话管理器) - 管理所有的移动设备功能
- Resource Manager(资源管理器)- 提供应用程序使用的各种非代码资源,如本地化字符串、图片、布局文件、颜色文件等
- Location Manager(位置管理器) - 提供位置服务
- XMPP Service(XMPP服务)- 提供Google Talk服务
3.1Libraries(系统库):系统库是应用程序框架的支撑,是连接应用程序框架层与Linux内核层的重要纽带。其主要分为如下几个:
-
SSL - 在Andorid上通信过程中实现握手
- System C library - 标准的C system library (libc), 这个对于做嵌入系统的交叉编译工具链都是非常熟悉了,从BSD继承来的标准C系统函数库,专门为基于embedded linux的设备定制。
- Media Libraries - 基于PacketVideo's OpenCORE,支持playback和录音,支持多种音视频格式和静态图形格式,包括MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG
- Surface Manager - 提供2D和3D图形
- SGL - 底层的2D图形渲染引擎
- 3D libraries - 基于OpenGL ES 1.0 APIs; 使用包括硬件3D加速,以及highly optimized 3D software rasterizer
- FreeType - bitmap and vector font rendering (字体渲染)
- SQLite - 小型的关系型数据库引擎
Android运行时):
Android应用程序是采用Java语言编写,程序在Android运行时中执行,其运行时分为核心库和Dalvik虚拟机两部分。
核心库 - 提供了Java语言API中的大多数功能,同时也包含了Android的一些核心API,如 android.os、android.net、android.media 等。
Dalvik虚拟机 - Android程序不同于Java me程序,每个Android应用程序都有一个专有的进程,并且不是多个程序运行在一 个虚拟机中,而是每个Android程序都有一个Dalivik虚拟机的实例,并在该实例中执行。Dalvik虚拟机是一种基 于寄存器的Java虚拟机,而不是传统的基于栈的虚拟机,并进行了内存资源使用的优化 以及支持多个虚拟机的特 点。需要注意的是,不同于Java me,Android程序在虚拟机中执行的并非编译后的字节码,而是通过转换工具dx 将Java字节码转成dex格式的中间码。