移动设备的火爆,不用过多笔墨,我们已经处于移动办公的时代,未来pc生存的空间,可能越来越小,对于移动应用开发的学习,显得越来越迫在眉睫,凭借着这几年的积累,经验,预计应该容易理解和入门些。
入门一个语言,时刻不忘恩师的教诲,任何事情,在做之前,要想到,这不是一个孤立的事件,必然和自身以前的事件有千丝万缕的联系,有了这些联系,我们在接受一个所谓意义上“新事件”的时候,先要“同化”,找到相同点,然后在实行【N+1】原则,循序渐进积累不同点,最后让这个事件在思维导图中和千千万万个其他事件产生联系,那么“新事件”就转化成了“老事件”。
架构
学习安卓,毕竟兴奋的一个特大号共同点【Java】,安卓是java语言开发,这个省略了很多新语言熟悉学习的过程。二安卓的架构也足够简单清晰,帮助我们更快速的进行熟悉和了解:
Android其本质就是在标准的Linux系统上增加了Java虚拟机Dalvik,并在Dalvik虚拟机上搭建了一个JAVA的application framework,所有的应用程序都是基于JAVA的application framework之上。
Android主要应用于ARM平台,但不仅限于ARM;
从上图中可以看出,Android系统架构为四层结构,从上层到下层分别是应用程序层、应用程序框架层、系统运行库层以及Linux内核层,分别介绍如下:
应用程序层
Android平台不仅仅是操作系统,也包含了许多应用程序,诸如SMS短信客户端程序、电话拨号程序、图片浏览器、Web浏览器等应用程序。这些应用程序都是用Java语言编写的,并且这些应用程序都是可以被开发人员开发的其他应用程序所替换,这点不同于其他手机操作系统固化在系统内部的系统软件,更加灵活和个性化。
对比java-web:类似于我们的web界面以及我们自己写的代码。
应用程序框架层
- Activity Manager(活动管理器)
管理各个应用程序生命周期以及通常的导航回退功能 - Window Manager(窗口管理器)
管理所有的窗口程序 - Content Provider(内容提供器)
使得不同应用程序之间存取或者分享数据 - View System(视图系统)
构建应用程序的基本组件 - Notification Manager(通告管理器)
使得应用程序可以在状态栏中显示自定义的提示信息
-Package Manager(包管理器)
Android系统内的程序管理 - Telephony Manager(电话管理器)
管理所有的移动设备功能 - Resource Manager(资源管理器)
提供应用程序使用的各种非代码资源,如本地化字符串、图片、布局文件、颜色文件等 - Location Manager(位置管理器)
提供位置服务 - XMPP Service(XMPP服务)
提供Google Talk服务
对比java-web:类似于框架提供的各种服务,spring,quartz等。
系统运行库层
从图中可以看出,系统运行库层可以分成两部分,分别是系统库和Android运行时,分别介绍如下:
- 系统库
系统库是应用程序框架的支撑,是连接应用程序框架层与Linux内核层的重要纽带。其主要分为如下几个:
- Surface Manager:
执行多个应用程序时候,负责管理显示与存取操作间的互动,另外也负责2D绘图与3D绘图进行显示合成。 - Media Framework:
多媒体库,基于PacketVideo OpenCore;支持多种常用的音频、视频格式录制和回放,编码格式包括MPEG4、MP3、H.264、AAC、ARM。 - SQLite:
小型的关系型数据库引擎 - OpenGL|ES:
根据OpenGL ES 1.0API标准实现的3D绘图函数库 - FreeType:
提供点阵字与向量字的描绘与显示 - WebKit:
一套网页浏览器的软件引擎 - SGL:
底层的2D图形渲染引擎 - SSL:
在Andorid上通信过程中实现握手 - Libc:
从BSD继承来的标准C系统函数库,专门为基于embedded linux的设备定制
- Surface Manager:
- Android运行时
Android应用程序时采用Java语言编写,程序在Android运行时中执行,其运行时分为核心库和Dalvik虚拟机两部分。
- 核心库
核心库提供了Java语言API中的大多数功能,同时也包含了Android的一些核心API,如android.os、android.net、android.media等等。 - Dalvik虚拟机
Android程序不同于J2me程序,每个Android应用程序都有一个专有的进程,并且不是多个程序运行在一个虚拟机中,而是每个Android程序都有一 个Dalivik虚拟机的实例,并在该实例中执行。Dalvik虚拟机是一种基于寄存器的Java虚拟机,而不是传统的基于栈的虚拟机,并进行了内存资源使用的优化 以及支持多个虚拟机的特点。需要注意的是,不同于J2me,Android程序在虚拟机中执行的并非编译后的字节码,而是通过转换工具dx将Java字节码转成dex格式的中间码。
- 核心库
对比java-web:类似于src.jar以及其他我们应用的jdk框架。
Linux内核层
Android是基于Linux2.6内核,其核心系统服务如安全性、内存管理、进程管理、网路协议以及驱动模型都依赖于Linux内核。
对比java-web:类似于war包运行的linux系统
总结:
在安卓开发的过程中,初期我们更多接触的是应用层的开发,其他的都是调用关系,也就是“黑箱子”,这就大大减少了开发的难度,得力于java程序员的人数优势,安卓应用市场的丰富就自然是这个结果,本篇文章先介绍这么多,下骗我们开始构建我们自己的开发环境。