1.Android简介

Android Developer‘s Guide 中将Android定义为针对移动设备的软件栈———用于实现完整的功能解决方案的软件子系统集合。这个栈中包括操作系统(由Linux内核修改而来)、部分基于Java的中间件(用于连接底层操作系统和高层应用的软件),以及诸如浏览器(即Browser)和联系人管理器(即Contacts)一类的关键应用(都是用Java编写的)。

Android具有以下特点:

允许重用和替换应用组件的应用程序框架(本章稍后会展开讨论);

支持蓝牙、EDGE、3G和Wi-Fi(需硬件支持);

支持摄像头、GPS、罗盘和加速度计① (需硬件支持);

针对移动设备优化的Dalvik虚拟机(DalvikVirtualMachine,DVM);

GSM 电话支持(需硬件支持);

集成了基于开源WebKit引擎的浏览器;

支持常见的音频、视频和静态图片格式(MPEG-4、H.264、MP3、AAC、AMR、JPG、PNG、GIF);

自定义的2D图形库,提供了经优化的图形显示;基于OpenGLES1.0规范的3D图形显示(硬件加速可选);

用于结构化数据存储的SQLite。

Android强大的开发环境(包括设备仿真器和EclipseIDE的插件)并不是Android设备软件栈的一部分,但也应该被视为Android的一大特点。

2.Android演化史

跟很多人想象的不一样,Android并不是源自Google。Android最早是由美国加州帕洛阿尔托市的一家名叫Android的创业公司开发的。2005年7月,Google收购了这家公司,并于2007年11月发布了AndroidSDK的预览版。

2008年8月中旬,Google发布了Android0.9SDK的beta版,一个月后发布了Android1.0SDK。表1-1罗列了SDK随后的更新。(从1.5版开始,每个主要版本都会有一个相应的代号,每个代号都是某种甜点的名称。)

表1-1 Android的主要版本

3.Android系统架构

Android软件栈的顶层是应用,中间是中间件(由应用框架、库和Android运行时组成),底层则是带有各种驱动的Linux内核。图1-1展示了这种分层架构。

图1-1 Android的分层架构由若干主要部分构成

用户关心的是应用,Android发行时就附带了很多有用的核心应用,包括浏览器(Browser)、联系人(Contacts)和电话(Phone)。所有的应用都是用Java语言编写的。应用构成了Android架构的最顶层。

直接支撑应用层的是应用框架(application framework),这是一组用于构建应用的高层构件。应用框架是预装在Android设备中的,其中包含以下组件。

Activity管理器(Activity Manager):该组件用于管理所有Activity的生命周期,并维护一个用于实现应用内部和应用之间切换Activity的共享活动栈。本章稍后会详细讨论。

内容提供器(Content Providers):这些组件将数据(例如浏览器应用中的书签)封装成能在应用间共享的形式

位置管理器(Location Manager):该组件使Android能获取设备的物理位置。

通知管理器(Notification Manager):该组件使应用可以将重要的事件(例如有新短消息)在状态栏中显示出来且不会打断用户当前的活动。

包管理器(Package Manager):该组件使应用可以知道设备上安装的其他包的情况。(本章稍后会讨论应用包。)

资源管理器(Resource Manager):该组件使应用可以访问各种资源,稍后会在攻略1-5中讨论该主题。

电话管理器(Telephony Manager):该组件使应用可以知道设备的电话服务状态。它还负责电话的拨打和接听。

视图系统(View System):该组件负责管理用户界面元素和生成面向用户界面的事件。(在攻略1-5中会简要探讨这些内容。)

窗口管理器(Window Manager):该组件将屏幕上的元素组织到窗口中,分配绘图界面,同时执行其他窗口相关任务。

应用框架中的组件在完成各自任务时都要依赖一些C/C++库。开发人员通过应用框架中的API与下面这些库交互。

FreeType:这个库用于支持点阵字和向量字的渲染。

libc:这是一个源自BSD系统的标准C系统库的实现,该C库针对嵌入式Linux设备进行了优化。

LibWebCore:这个库为Android浏览器和嵌入式Web视图提供了现代化的高速Web浏览器引擎。它是基于WebKit的(http://en.wikipedia.org/wiki/WebKit),Google的Chrome和苹果的Safari浏览器使用的也是WebKit。

媒体框架(Media Framework):这些基于Packet Video的Open CORE的库支持多种流行的影音格式的播放和录制,还能处理静态图片文件。支持的格式包括MPEG-4、H.264、MP3、AAC、AMR、JPEG和PNG。

Open GL|ES:这是Android基于OpenGL|ES1.0API的OpenGL实现的3D 绘图库。它可以使用硬件3D加速(如果能用的话)或是内建的(经过高度优化的)3D 软件光栅器。

SGL:这个库提供了底层的2D绘图引擎。

SQLite:这个库提供了一个功能强大的轻量级关系数据库引擎,可供所有应用使用。Mozilla的Firefox和苹果的iPhone也用这个引擎实现持久化存储。

SSL:这个库提供了基于SSL (安全套接层)的网络通信安全机制。

外观管理器(Surface Manager):这个库负责管理显示子系统的访问方式并将各种应用的2D和3D图形层无缝地组合在一起。

Android运行时环境由核心库(ApacheHarmonyJava第5版实现的一个子集)和Dalvik虚拟机组成。Dalvik不是基于栈的,而是一个基于寄存器的非Java虚拟机。

——摘自《Android攻略》

转载于:https://blog.51cto.com/turingbook/898548

Android攻略之入门相关推荐

  1. Eclipse全键盘编码攻略之一——入门

    入门 Alt+/ 平时我们输入类实例后按"."就会有个自动补全的提示,其实可以在任何地方按这个快捷键都可以弹出类似的提示,变量名补全.成员变量选择.自动取名等等--.如果闲自己按这 ...

  2. 四川麻将必胜攻略笔记(入门篇1)

    四川麻将攻略 定义 搭子 :离成型的牌型缺一张的牌,如2378,是两搭,可以成两个顺子 起手 共13张牌,先快速计算自己多少搭 胡牌 四搭一对胡牌,所以只需要四搭,不需要太多 搭数练习 总结

  3. 学习笔记---程序员练级攻略(入门篇、修养篇、专业基础篇、软件设计篇、高手成长篇)

    根据极客时间 左耳朵耗子 整理,请忽略每一行最后的数字 文章目录 1. 入门篇 47 2. 修养篇 51 3. 专业基础篇 56 4. 软件设计篇 60 5. 高手养成 63 1. 入门篇 47 1. ...

  4. eflv2 android攻略,USM 1.5.2_ISO全能维护版(03pe+win8pe_x64全能,u+v2高端隐藏,EFI)

    文件格式:ISO(量产专用),下载后为EXE自解压包,运行即可解压.量产成功后,U盘就为2个盘符. 如果需要下载UD版的,请移步: 软件来自系统总裁,作者:红毛樱木 此版依旧是03pe+win8pex ...

  5. 华为机考攻略(python)--入门题【5题】(第一题HJ5进制转换)

    系列文章目录 文章目录 系列文章目录 前言 一.输入处理:HJ5进制转换 二.sound code 其它进制转换 总结 前言 一.输入处理:HJ5进制转换 描述: 写出一个程序,接受一个十六进制的数, ...

  6. 激活策略 查询_苹果Apple Search Ads搜索竞价广告全攻略——从入门到运营优化策略 推广人员不得不看...

    Apple Search Ads 简介‍ 简称ASA,意为苹果以App Store为介质的一种官方搜索竞价广告.2016年9月29日苹果搜索广告正式在美国上线,随后逐渐开放了英国.澳大利亚.新西兰.墨 ...

  7. Android Studio打包全攻略----Gradle-Build Variants构建定制版App

    上一篇文章 Android Studio打包全攻略-从入门到精通限于篇幅Build Variants的作用分析得还不够,这篇文章主要探讨如何构建特别定制版App. 你肯定看到过这样的App,类似于:打 ...

  8. 深海迷航创造模式火箭怎么飞_深海迷航火箭怎么发射说什么没关 | 手游网游页游攻略大全...

    发布时间:2018-01-25 今天小编来告诉大家我的世界火箭怎么发射,按什么键发射火箭,想知道的玩家一定要看下面的内容! 拿上这些 平台摆成这样 放上注入器 在里面放上电池和燃油 放上火箭 等黄色条 ...

  9. 高效学习 程序员练级攻略

    感谢内容提供者:金牛区吴迪软件开发工作室 文章目录 一.高效学习 1.端正学习态度 2.面对枯燥和量大的知识 3.深度,归纳和坚持实践 4.学习和阅读源码 5.源头.原理和知识地图 二.程序员练级攻略 ...

最新文章

  1. 恩布企业即时通讯软件,EntboostChat 1.4.2发布,iOS开源IM
  2. 【JAVA秒会技术之秒杀面试官】JavaEE常见面试题(六)
  3. Android系统中自定义按键的短按、双击、长按事件
  4. 多线程处理同一批数据_多进程和多线程的优缺点
  5. 『流畅的Python』第12章:继承的优缺点
  6. python英文字符串排序_Python根据内嵌的数字将字符串排序(sort by numbers embedded in strings)...
  7. 天逸310s可以装win7吗_婚车装饰是婚庆公司负责吗?婚车装饰还有哪里可以装
  8. ECMAScript面向对象(一)
  9. 第7章 比高斯更快的计算
  10. zoj 1450 Minimal Circle 最小覆盖圆
  11. 背水一战 Windows 10 (42) - 控件(导航类): Frame 动画
  12. yum更换国内源、yum下载rpm包  源码包安装
  13. 7.10 添加房间参数
  14. 视频教程-R语言入门基础-大数据
  15. 解决CAJ阅读器读取学位论文卡到爆炸的问题
  16. oracle游标添加数据,Oracle使用游标更新数据
  17. 3.OpenCV可视化(Viz)——单目相机标定模拟
  18. GIS 术语和缩略语
  19. rails 代码结构详解
  20. 时间窗口算法用matlab,一种基于动态规划算法的时间窗口相关的参与者选择方法与流程...

热门文章

  1. 弹载计算机的上市公司,基于无线通信的弹载计算机系统BIT设计
  2. SpringBoot @CachePut注解的使用原理
  3. java中的gridy_JAVA格局管教器.
  4. hadoop安全模式
  5. Rust中mut, , mut的区别
  6. 并发编程的数据竞争问题以及解决之道
  7. Python爬虫入门_之urllib2urllib
  8. springcloud使用restTemplate进行服务调用
  9. Emulator 29.0.4 Canary 发布,Android 模拟器
  10. 个推Node.js 微服务实践:基于容器的一站式命令行工具链