Chinaunix首页 | 论坛 | 博客
  • 博客访问: 465128
  • 博文数量: 145
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1060
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-22 11:52
个人简介

专注计算机技术: Linux Android 云计算 虚拟化 网络

文章分类

全部博文(145)

文章存档

2016年(3)

2015年(21)

2014年(75)

2013年(46)

我的朋友

分类: Android平台

2015-05-31 16:22:54

分类: Android移植 5138人阅读 评论(8) 举报

写在前面的

  这是我最近两年的Android开发的经验总结,断断续续的写了几个月了,欢迎大家砖头,有不对的地方,或需要改进的地方,请指出来,先贴出来目录来看看。
+---------------------------------------------------------------------------------------------------------------------------------------------+


第一章、概述


本章节主要介绍Android系统基本特点、系统架构组成及Android应用开发方式。

主要内容:

l  Android 操作系统介绍

l  Android软件架构介绍

l  Android子系统介绍

l  Android应用程序开发过程

1.1  Android 操作系统介绍

Android是Google公司于2007年11月发布的一款非常优秀的智能移动平台操作系统。到2011年第一季度Android在全球的市场份额首次超过Nokia的Symbian系统,跃居全球第一。


Android系统最初由AndyRubin等人于2003年10月创建。Google于2005年8月17日收购Android并组建OHA开放手机联盟开发改良Android,之后逐渐扩展到平板电脑及其他移动平台领域上。

Android系统是一个基于ApacheLicense, GPL软件许可的开源手机操作系统,底层由Linux操作系统作为内核,我们可以直接从Android的官方网站上下载最新的Android源码和相关开发工具包。

Android官方首页:

Android官方开发者首页:

http://developer.android.com/index.html

Android官方开源项目AOSP首页:

1.2  Android软件架构介绍

Android的软件架构采用了分层结构,如图1-1所示,由上至下分别为:Application应用层、Application Framework应用框架层、Android Runtime&Libraries运行时库和本地库层、LinuxKernel内核层。

图1-1 Android软件架构图

1)  Application应用层:用户安装应用程序及系统自带应用程序层,主要用来与用户进行交互,如Home指Android手机的桌面,Phone指电话应用,用来拨打电话等。

2)  Application Framework应用框架层:系统框架层,封装了大量应用程序所使用的类,从而达到组件重用的目的,它主要向上层应用层提供API,如:ActivityManager主要用于管理所有的Activity画面导航、回退等生命周期相关的操作,PackageManager主要用来管理程序安装包的安装、更新、删除等操作。

3)  Android Runtime&Libraries运行时库和本地库层:Runtime是Android的运行环境,在该层有DalvikVirtualMachine(Android的虚拟机简称DVM)的实现,在DVM中运行着Java的核心语言库代码和Java程序。同时,在DVM运行期间要调用系统库代码,如:负责显示的SurfaceManager本地代码,负责多媒体处理相关的Media Frameworks代码及C库libc等。

4)  Linux Kernel内核层:Android系统是基于Linux系统的,所以Android底层系统相关的框架和标准的Linux内核没有什么很大的区别,只不过添加了几个Android系统运行必备的驱动,如:Binder IPC进程间通信驱动、Power Manager电源管理驱动等。

总结:Android的软件架构是我们学习Android开发必须要掌握的知识点,它对我们将来编写Android应用程序、理解Android框架代码、编写本地代码、修改底层驱动都有重要的指导意义,可谓是学习Android的灵魂。

1.3  Android子系统介绍

Android是一个庞大的手机的系统,它不仅仅实现了手机的基本的打电话,发信息的功能,还实现了更复杂的多媒体处理、2D和3D游戏处理、信息感知处理等。

 


图1-2 Android主要子系统

 

Android的子系统主要包含:

1)     Android RIL子系统:

Radio Interface Layer(简称:RIL)子系统,即:无线电接口系统用于管理用户的电话、短信、数据通信等相关功能,它是每个移动通信设备必备的系统。

2)     Android Input子系统:

Input输入子系统用来处理所有来自己用户的输入数据,如:触摸屏,声音控制物理按键等。

3)     Android GUI子系统:

GUI即:图形用户接口,也就是所谓的图形界面,它用来负责显示系统图形化界面,形象让用户和系统操作及信息进行交互。Android的 GUI系统和其它各子系统关系密切相关,是Android中最重要的子系统之一,如:绘制一个2D图形、通过OpenGL库处理3D游戏、通过SurfaceFlinger来重叠几个图形界面。

4)     Android Audio子系统:

Android的音频处理子系统,主要用于音频方面的数据流传输和控制功能,也负责音频设备的管理。Android的Audio系统和多媒体处理紧密相连,如:视频的音频处理和播放、电话通信及录音等。

5)     Android Media子系统:

Android的多媒体子系统,它是Android系统中最庞大的子系统,与硬件编解码、OpenCore多媒体框架、Android多媒体框架等相关,如:音频播放器,视频播放器,Camera摄像预览等。

6)     Android Connectivity子系统:

Android连接子系统是智能设备的重要组成部分,它除了一般所谓的网络连接,如:以太网、WI-FI外,还包含:蓝牙连接、GPS定位连接、NFC等。

7)     Android Sensor子系统:

Android的传感器子系统为当前智能设备大大提高了交互性,它在一新创新的应用程序和应用体验里发挥了重要作用,传感器子系统和手机的硬件设备紧密相关,如:gyroscope陀螺仪、accelerometer加速度计、proximity距离感应器、magnetic磁力传感器等。

①     Android中图形混合器,用于将屏幕上显示的多个图形进行混合显示。

②     Wi-Fi全称wireless fidelity是当今使用最广的一种无线网络传输技术。

③     GPS是英文Global Positioning System(全球定位系统)的简称。

④    NFC是Near FieldCommunication缩写,即近距离无线通讯技术。由飞利浦公司和索尼公司共同开发的NFC是一种非接触式识别和互联技术,可以在移动设备、消费类电子产品、PC 和智能控件工具间进行近距离无线通信。

1.4  Android应用程序开发过程

Android应用程序开发是基于Android架构提供的API和类库编写程序,这些应用程序是完全的Java代码程序,它们构建在Android系统提供的API之上。

Android开发方式:

开发Android应用程序可以基于Google提供的Android SDK开发工具包,也可以直接在Android源码中进行编写。

1) Android SDK开发:

它提供给程序员一种最快捷的开发方式,基于IDE开发环境和SDK套件,快速开发出标准的Android应用程序,但是,对于一些要修改框架代码或基于自定义API的高级开发,这种方式难以胜任。

2) Android源码开发:

基于Android提供的源码进行开发,可以最大体现出开源的优势,让用户自定义个性的Android系统,开发出更高效、更与众不同的应用程序,这种方式更适合于系统级开发,对程序员要求比较高,这也是我们本书的重点。

Android源码开发过程:

?  搭建开发环境:

根据两种开发方式的不同,搭建开发环境略有不同,本书侧重于系统底层源码开发,只介绍第二种开发方式,对于第一种方式,请读者参考相关书箱资料。

?  下载Android源码:

得益于Android的开源特点,Android源码中包含大量保贵的技术知识,我们可以在阅读源码过程中更深入的了解Android系统的奥秘,为我们编写更高效、更有特点的应用程序打下基础,同时能展现给读者一个更庞大系统的设计蓝图,为系统设计师及项目经理提供参考价值。同时,Android的源码中提供的应用程序示例、设计模式、软件架构为我们编写大型应用程序提供经验。

?  编译Android源码:

通过编译Android源码,生成我们开发环境及目标系统,为我们做系统底层开发、系统定制与优化做准备,通过分析编译过程,让我们学习到大型工程的代码管理与编译原理。

?  配置开发环境安装

为了更有效的开发,我们通常会对开发环境做配置,不同的程序员可能会有不同的编程习惯。

 

1.5  章节练习

1) 简述Android系统的软件构架组成?

2) 简述AndroidSensor子系统的主要作用?http://blog.csdn.net/mr_raptor/article/details/8940414

阅读(1776) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~