标题：android开发
Android简介
Android早期由“Android之父”之称的Andy Rubin创办，Google于2005年并购了成立仅22个月的高科技企业Android，展开了短信、手机检索、定位等业务，基于Linux的通用平台进入了开发。Google公司在2007年11月5日正式公布这个操作系统，2008年，Patrick Brady于Google I/O演讲“Anatomy & Physiology of an Android”，并提出的Android HAL架构图。HAL以*.so档的形式存在，可以把Android framework与Linux kernel隔开。  3G梦工场软件学院，在国内开设安卓开发课程，下面就有安卓来进行详细的介绍
Android名称来源
Android一词最早出现于法国作家利尔亚当在1886年发表的科幻小说《未来夏娃》中。他将外表像人的机器起名为Android。 
2010年2月3日，Linux内核开发者Greg Kroah-Hartman将Android的驱动程序从Linux内核“状态树”（“staging tree”）上除去，从此，Android与Linux核心开发分道扬镳。
Android介绍
Android 是Google开发的基于Linux平台的开源手机操作系统。它包括操作系统、用户界面和应用程序—— 移动电话工作所需的全部软件，而且不存在任何以往阻碍移动产业创新的专有权障碍。谷歌与开放手机联盟合作开发了 Android，这个联盟由包括中国移动、摩托罗拉、高通、宏达和 T-Mobile在内的 30 多家技术和无线应用的领军企业组成。通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系，我们希望借助建立标准化、开放式的移动电话软件平台，在移动产业内形成一个开放式的生态系统。我们认为此举必将推进更好、更快的创新，为移动用户提供不可预知的应用和服务。
Android 作为谷歌企业战略的重要组成部分，将进一步推进"随时随地为每个人提供信息"这一企业目标的实现。我们发现，全球为数众多的移动电话用户从未使用过任何基于 Android 的电话。谷歌的目标是让（移动通讯）不依赖于设备甚至平台。出于这个目的，Android 将补充，而不会替代谷歌长期以来奉行的移动发展战略：通过与全球各地的手机制造商和移动运营商结成合作伙伴，开发既有用又有吸引力的移动服务，并推广这些产品。
开放手机联盟的成立和 Android 的推出是对现状的重大改变，在带来初步效益之前，还需要不小的耐心和高昂的投入。但是，我们认为全球移动用户从中能获得的潜在利益是值得付出这些努力的。如果你也是一个开发者，并对我们的想法感兴趣，就请再给我们一星期的时间，届时谷歌便能提供 SDK 了。如果你是一名移动用户，只需再等一段时间，我们的一些合作伙伴计划在 2008 年下半年推出基于 Android 平台的电话产品。如果你已经拥有一部你了解并喜爱的电话，确保你已经安装谷歌手机地图、Gmail 以及其他一些专为你的手机开发的精彩应用。谷歌将继续努力，让这些服务变得更好，同时也将添加更有吸引力的特性、应用和服务。
Android 发展历史简介
2003年10月，Andy Rubin等人创建Android公司，并组建Android团队。
2005年8月17日，Google低调收购了成立仅22个月的高科技企业Android及其团队。安迪鲁宾成为Google公司工程部副总裁，继续负责Android项目。
2007年11月5日，谷歌公司正式向外界展示了这款名为Android的操作系统，并且在这天谷歌宣布建立一个全球性的联盟组织，该组织由34家手机制造商、软件开发商、电信运营商以及芯片制造商共同组成，并与84家硬件制造商、软件开发商及电信营运商组成开放手持设备联盟（Open Handset Alliance）来共同研发改良Android系统，这一联盟将支持谷歌发布的手机操作系统以及应用软件，Google以Apache免费开源许可证的授权方式，发布了Android的源代码。　
2008年，在GoogleI/O大会上，谷歌提出了Android HAL架构图，在同年8月18号，Android获得了美国联邦通信委员会（FCC）的批准，在2008年9月，谷歌正式发布了Android 1.0系统，这也是Android系统最早的版本。
2009年4月，谷歌正式推出了Android 1.5这款手机，从Android 1.5版本开始，谷歌开始将Android的版本以甜品的名字命名，Android 1.5命名为Cupcake（纸杯蛋糕）。该系统与Android 1.0相比有了很大的改进。
2009年9月份，谷歌发布了Android 1.6的正式版，并且推出了搭载Android 1.6正式版的手机HTC Hero（G3），凭借着出色的外观设计以及全新的Android 1.6操作系统，HTC Hero（G3）成为当时全球最受欢迎的手机。Android 1.6也有一个有趣的甜品名称，它被称为Donut（甜甜圈）。
2010年2月份，Linux内核开发者Greg Kroah-Hartman将Android的驱动程序从Linux内核“状态树”（“staging tree”）上除去，从此，Android与Linux开发主流将分道扬镳。在同年5月份，谷歌正式发布了Android 2.2操作系统。谷歌将Android 2.2操作系统命名为Froyo，翻译完名为冻酸奶。　
2010年10月份，谷歌宣布Android系统达到了第一个里程碑，即电子市场上获得官方数字认证的Android应用数量已经达到了10万个，Android系统的应用增长非常迅速。在2010年12月，谷歌正式发布了Android 2.3操作系统Gingerbread （姜饼）。
2011年1月，谷歌称每日的Android设备新用户数量达到了30万部，到2011年7月，这个数字增长到55万部，而Android系统设备的用户总数达到了1.35亿，Android系统已经成为智能手机领域占有量最高的系统。
2011年8月2日，Android手机已占据全球智能机市场48%的份额，并在亚太地区市场占据统治地位，终结了Symbian（塞班系统）的霸主地位，跃居全球第一。
2011年9月份，Android系统的应用数目已经达到了48万，而在智能手机市场，Android系统的占有率已经达到了43%。继续在排在移动操作系统首位。在9月19号，谷歌将会发布全新的Android 4.0操作系统，这款系统被谷歌命名为Ice Cream Sandwich（冰激凌三明治）。　
2012年1月6日，谷歌Android Market已有10万开发者推出超过40万活跃的应用，大多数的应用程序为免费。Android Market应用程序商店目录在新年首周周末突破40万基准，距离突破30万应用仅4个月。在2011年早些时候，Android Market从20万增加到30万应用也花了四个月。
系统架构
应用程序Android以Java为编程语言，使接口到功能，都有层出不穷的变化，其中Activity等同于J2ME的MIDlet，一个 Activity 类（class）负责创建视窗（window），一个活动中的Activity就是在 foreground（前景）模式，背景运行的程序叫做Service。两者之间通过由ServiceConnection和AIDL连结，达到复数程序同时运行的效果。如果运行中的 Activity 全部画面被其他 Activity 取代时，该 Activity 便被停止（stopped），甚至被系统清除（kill）。 
View等同于J2ME的Displayable，程序人员可以通过 View 类与“XML layout”档将UI放置在视窗上，Android 1.5的版本可以利用 View 打造出所谓的 Widgets，其实Widget只是View的一种，所以可以使用xml来设计layout，HTC的Android Hero手机即含有大量的widget。至于ViewGroup 是各种layout 的基础抽象类（abstract class），ViewGroup之内还可以有ViewGroup。View的构造函数不需要再Activity中调用，但是Displayable的是必须的，在Activity 中，要通过findViewById()来从XML 中取得View，Android的View类的显示很大程度上是从XML中读取的。View 与事件（event）息息相关，两者之间通过Listener 结合在一起，每一个View都可以注册一个event listener，例如：当View要处理用户触碰（touch）的事件时，就要向Android框架注册View.OnClickListener。另外还有Image等同于J2ME的BitMap。中介软件操作系统与应用程序的沟通桥梁，并用分为两层：函数层（Library）和虚拟机（Virtual Machine）。 Bionic是 Android 改良libc的版本。Android 同时包含了Webkit，所谓的Webkit 就是Apple Safari 浏览器背后的引擎。Surface flinger 是就2D或3D的内容显示到屏幕上。Android使用工具链(Toolchain)为Google自制的Bionic Libc。 
Android采用OpenCORE作为基础多媒体框架。OpenCORE可分7大块：PVPlayer、PVAuthor、Codec、PacketVideo Multimedia Framework(PVMF)、Operating System Compatibility Library(OSCL)、Common、OpenMAX。 
Android 使用skia 为核心图形引擎，搭配OpenGL/ES。skia与Linux Cairo功能相当，但相较于Linux Cairo, skia 功能还只是阳春型的。2005年Skia公司被Google收购，2007年初，Skia GL源码被公开，目前Skia 也是Google Chrome 的图形引擎。 
Android的多媒体数据库采用SQLite数据库系统。数据库又分为共用数据库及私用数据库。用户可通过ContentResolver类（Column）取得共用数据库。 
Android的中间层多以Java 实现，并且采用特殊的Dalvik 虚拟机（Dalvik Virtual Machine）。Dalvik虚拟机是一种“暂存器型态”（Register Based）的Java虚拟机，变量皆存放于暂存器中，虚拟机的指令相对减少。 
Dalvik虚拟机可以有多个实例（instance）, 每个Android应用程序都用一个自属的Dalvik虚拟机来运行，让系统在运行程序时可达到优化。Dalvik 虚拟机并非运行Java字节码（Bytecode），而是运行一种称为.dex格式的文件。硬件抽像层Android 的 HAL（硬件抽像层）是能以封闭源码形式提供硬件驱动模块。HAL 的目的是为了把 Android framework 与 Linux kernel 隔开，让 Android 不至过度依赖 Linux kernel，以达成 kernel independent 的概念，也让 Android framework 的开发能在不考量驱动程序实现的前提下进行发展。 
HAL stub 是一种代理人（proxy）的概念，stub 是以 *.so 档的形式存在。Stub 向 HAL“提供”操作函数（operations），并由 Android runtime 向 HAL 取得 stub 的 operations，再 callback 这些操作函数。HAL 里包含了许多的 stub（代理人）。Runtime 只要说明“类型”，即 module ID，就可以取得操作函数。编程语言Android 是运行于 Linux kernel之上，但并不是GNU/Linux。因为在一般GNU/Linux 里支持的功能，Android 大都没有支持，包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic 取代Glibc、以Skia 取代Cairo、再以opencore 取代FFmpeg 等等。Android 为了达到商业应用，必须移除被GNU GPL授权证所约束的部份，例如Android将驱动程序移到 userspace，使得Linux driver 与 Linux kernel彻底分开。bionic/libc/kernel/ 并非标准的kernel header files。Android 的 kernel header 是利用工具由 Linux kernel header 所产生的，这样做是为了保留常数、数据结构与宏。 
目前Android 的 Linux kernel控制包括安全（Security），存储器管理（Memory Managemeat），程序管理（Process Management），网络堆栈（Network Stack），驱动程序模型（Driver Model）等。下载Android源码之前，先要安装其构建工具 Repo来初始化源码。Repo 是 Android 用来辅助Git工作的一个工具。
知识体系
1、Unix/Linux平台技术：基本命令，Linux下的开发环境
2、企业级数据库技术：SQL语言、SQL语句调优、Oracle数据库技术 
3、Java 语言核心技术：Java语言基础、Java面向对象编程、JDK核心API、Java集合框架、Java网络编 程、JavaI/O编程、Java多线程编程、Java异常机制、Java安全、JDBC、XML 
4、软件工程和设计模式：软件工程概述、配置管理及SVN、UML、基本设计模式 
5、Android应用开发基础[1]：Android开发平台、Eclipse+ADT开发环境、AVD及传感模拟器调试、Android核心组件、Android常用组件、Android高级组件、文件及网络访问、SQLite数据库编程、后台服务编程 
6、互联网核心技术： HTML、CSS、JavaScript、JQuery、Ajax应用 
7、Android高级应用开发：音频\视频\摄像头、互联网应用、GPS和位置服务、Google Map、2D\3D绘制、传感器开发、游戏开发、电话及SMS服务、网络\Bluetooth\Wi-Fi等。 
8、Android系统级开发：移植、驱动、NDK（C方向）。
9、JavaEE核心技术：Servlet核心技术、JSP核心技术、Struts、Spring、Hibernate框架。[2]
Android学习内容
Android基础阶段：平台架构特性(JAVA/C) Market/应用程序组件 环境搭建与部署/打包与发布 AVD/DDMS/AAPT 调试与测试 相关资源访问/资源制作 Activity/Service/Broadcast Receiver/Content Provider/原理(生命周期)及深层实现
Android进阶初级：组件Widget/ 菜单Menu/ 布局Layout 详解 Xml解析(Pull/Dom/Sax)/JNI 解析SQL数据库原理, SQLite /SharedPreferences/File详解 多媒体Audio/Video/Camera 详解
Android进阶高级：蓝牙/WIFI SMS/MMS 应用实现 深层次解析GPS原理,实现LocationManager/LocationProvider 进行定位/跟踪/查找/趋近警告以及Geocoder正逆向编解码等技术细节 2D图形库(Graphics/View)详解 SDCARD/传感器/手势 应用实现[3]