第一部分:开发前的准备-第一章 什么是Andorid
第1章 什么是Android
Android是一个移动设备的软件栈,它包含操作系统,中间件和一些关键的应用。Android SDK提供工具和必要的API用来在Android平台上使用java程序语言来开始开发应用程序。
以上↑是官方的解释,但我们需要理解几个关键点。
(1)什么是软件栈:首先栈在数据结构中大家应该都明白,它是先进后出(或者后进先出)的数据结构。软件栈就是一种这样的结构,但它里面装的不单单是数据那么简单。
Android软件栈它的最底层是Linux内核,然后中间是一些库文件,最上层则是应用程序框架(或者可以叫应用程序接口俗称API)。
(2)java:开发android程序一般都是用java语言开发的,但某些特殊的情况可以用到C/C++,以后可能还会添加脚本语言也说不定。这里大家只需要了解就可以了,如果某人说Android只能用java开发,你可以完全否定他的说法。至少目前也有用C/C++开发底层来提高性能的
1.1 特性
下面我们看一下表格1-1,了解一下Android的特性
应用框架 |
允许组件的重用和更新(通俗来说就是符合面向对象的原则设计) |
Dalvik虚拟机 |
专为移动设备最优化而设计(以后会有详细的Dalvik虚拟机原理与参数介绍) |
浏览器 |
基于开源的WebKit引擎 |
图形优化 |
技术支持:一个自定义的2D图形库;基于OpenGL ES 1.0规格的3D图形 (可选择的硬件加速功能,ES版本不仅仅只有1.0还有其他版本,以后会详细说明) |
SQLite |
为数据存储服务的一个结构(SQL大家都知道把,大部分相似但不是完全一样) |
多媒体支持 |
支持一般的音频,视频和一些图片格式(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF) |
蓝牙,EDGE,3G, WiFi |
以及附属的一些硬件支持(EDGE是一种从GSM到3G的过渡技术,它主要是在GSM系统中采用了一种新的调制方法) |
摄像机, GPS, 指南针, 加速器 |
以及附属的一些硬件支持 |
丰富多样化的开发环境 |
包含模拟器, 调试工具, 内存和性能概要, 和一个和基于Eclipse IDE的插件(ADT) |
表格1-1 Android的特性
1.2 Android 架构
这就是我们上面说的软件栈的详细架构(大家可以看到底层是linux内核,中间层是库文件与运行时库文件还有虚拟机,蓝色部分我们可以看成API体系,下面讲述每个部分),如图1-1所示
图1-1 Android架构图
1.2.1 Applications(应用层)
这一层包含Android一整套核心的应用,它们分别包括email客户端,短信程序,日历,地图,浏览器,联系人和其他。这里所有应用程序都是用java语言实现的。
1.2.2 Application Framework(应用程序框架层)
Android通过提供一个开源的平台让开发者开发出极为丰富和创新功能的应用程序。我们可以自由充分的利用硬件设备,访问本地信息,执行后台服务,设置闹钟,通知状态栏
,等等。我们可以和核心应用程序(短信,日历等)使用同样的框架API。应用架构的设计可以简化组件的重用(面向对象又来咯);任何应用程序可以发布其功能,任何其他的应用程序都可以使用这些功能(必须遵守框架的安全限制,以后会说到的权限问题)。框架中的所有内容都会让我们很方便的替换任何组件。
下面的一些内容是一套应用程序的服务和系统,它们可用于所有应用程序,了解一下它们,有个印象会对以后的学习很有帮助,它们包括:
(1)一套丰富和可扩展的Views(请记住View这个概念,你需要显示界面就必须用到它)用来构建一个应用程序, 包含lists, grids, text boxes, buttons, 一个嵌入式的web浏览器.
(2)Content Providers:允许A应用从B,C,D应用中访问数据 (作为第三方中介), 或者共享自己的数据
(3)Resource Manager:提供非代码资源,如本地化字符串,图形,和布局文件(以后会详细描述android的资源使用与定义)
(4)Notification Manager:允许所有应用在状态栏中显示一个自定义的通知(这是一个很方便的功能)
(5)Activity Manager:管理应用的生命周期并且提供一个通用的导航回退功能(Activity是一个很重要的概念,后面会详细介绍的,留个印象)
Applicateion framework简单来说是一套比较完善的框架系统,它可以很好的为我们开发应用程序来服务,google把它开发出来的目的就是让你方便的使用它,在第二章我们将详细学习。现在还不着急!
1.2.3 Libraries(库文件集)
Android有一套C/C++库文件,它被各种各样的系统组件所使用,这些库文件越过android应用程序框架,在它的底层并暴露了一些功能给我们使用。
下面我们看一下表格1-2看看一些核心的库文件:
System C library |
一个BSD(BSD:http://baike.baidu.com/view/209692.htm)衍生出的标准C库的实现, 使之与嵌入式基于Linux的设备相互协调 |
Media Libraries |
基于视屏软件的开源内核;它支持目前主流音频,视频格式的播放,录音,以及静态图像文件,包括MPEG4,H.264,MP3,AAC,AMR,JPG,PNG |
Surface Manager |
管理访问子系统的显示和多应用无缝地整合到2D,3D。 |
LibWebCore |
一个现代的web浏览器引擎,支持android浏览器和一个嵌入式的webView |
SGL |
基于SDL的2D图形引擎 |
3D libraries |
基于OpenGL ES 1.0API的3D库; 这个库使用3D硬件加速(如果有的话)或者使用高度优化的3D软件光栅器 |
FreeType |
位图与矢量格式渲染 |
SQLite |
个强大的轻量级关系型数据库引擎 |
表格1-2 Android核心的库文件
1.2.4 Android Runtime(Android运行时)
Android平台大多数核心库功能是用java语言写的。每一个Android应用在其自己的进程中执行,并且在Dalvik虚拟机中都有一个自己的实例。一个设备能执行多个有效的虚拟机。Dalvik 虚拟机执行的是一种.dex格式的文件 。它经过优化以让它最低限度的内存占用。虚拟机的寄存器由java语言编译器执行编译并打包到.dex格式中
1.2.5 Linux Kernel(Linux内核)
Android 是以2.6版的Linux为核心的系统服务,如安全,内存管理,进程管理,网络协议栈,驱动模型 。这里的内核可以理解为一个在硬件和软件栈之间的桥梁(比较抽象的桥梁)
1.3 本章小结
本章是从比较大的方向来总体介绍android体系,读者需要有个大概的认识,然后才能层层深入。就好像一个软件项目的架构,好的架构会让你扩展起来更方便
本文来自jy02432443,QQ78117253。转载请保留出处,并保留追究法律责任的权利