章节索引 :

Android 系统背景及结构概述

谷歌 Android 系统

1. Android 的历史

Android 一词的本意指“人形机器人”,安迪•鲁宾 (Andy Rubin) 在 2003 年以此名创办了 Android 公司并开始召集团队研发 Android 系统。后于 2005 年被 Google 收购,安迪•鲁宾随后任 Google 工程部副总裁,继续负责 Android 项目的研发工作。

安卓系统(Android)是一款基于 Linux 内核的自由开源的操作系统,主要使用于移动设备,如智能手机和平板电脑。 Google 在 2007 年 11 月 5 日正式对外公布的了这款系统,并以“绿色机器人”的形状作为其 Logo。早期由 Google 开发,后由开放手机联盟(Open Handset Alliance)负责开发。

2. Android 的层级结构

Android 从系统架构上可分为四层结构,自下而上分别是:

  • Linux 内核
  • 系统运行库
  • 应用程序框架
  • 应用程序

Android 架构图

2.1 Linux 内核

这一层是 Android 的核心系统服务,位于 Android 系统的最底层,直接与硬件设备交互。它依赖于 Linux,负责内存管理、进程管理、设备管理、网络协议栈、安全性和驱动模型等系统级服务。

Linux 内核作为 Android 硬件和软件之间的抽象层,为了更好的为 Android上层应用服务,Google 基于 Linux 做了一些的定制化的修改,具体的修改内容及原因会在后续的教程中陆续提到。

2.2 系统运行库

这一层包含两大块:系统库及 Android 运行时。

  • 系统库
    这一部分其实就是 C/C++ 库,这些库在 Android 系统中通常以 so 的形式供不同的组件使用,开发者可以通过自己的应用程序使用这些库提供的服务。

  • Android 运行时
    Android 采用 Java 作为开发语言,在其运行时中包含了 Java 核心库的大多数功能,并使每一个 Android 应用程序都在它自己的进程中运行,都拥有一个独立的 Dalvik 虚拟机实例。Dalvik 可以保证一个设备可以同时高效地运行多个虚拟系统。

2.3 应用程序框架

这一层是会和用户直接打交道的一层,也是开发者最需要关注的一层。它包含了一系列的服务和系统,其中包括:

  • 丰富而又可扩展的视图(Views)
  • 内容提供器(Content Providers)
  • 资源管理器(Resource Manager)
  • 通知管理器(Notification Manager)
  • 活动管理器(Activity Manager)

2.4 应用程序

开发者的绝大部分工作都是在这一层完成,通过 Java 编写的应用程序我们可以使用 Android 系统提供的服务来实现我们预期的功能。

每一个应用程序都对应一个 Dalvik 虚拟机,利用跨平台性质,基于 Android 框架开发的应用程序可以运行于任何一台安装有 Android 系统的平台。

本教程的大多数内容也是针对这一层,我们将带领你建立属于自己的第一个 Android 应用程序,并一步步由浅入深的学习 Android 各个细枝末节,让你可以更好的掌握 Android 应用程层序开发。

3. Android 各个版本、代号及 API 级别

从 Android 1.5 开始,Google 发型每一个 Android 版本都用一个甜品的名称作为代号,而代号首字母是从 C 开始以此按照字母顺序排列,而直到 19 年发布的 Android Q 开始,Google 弃用了这一传统,改名为 Android 10。

名称 版本号 API等级 发布时间 BuildVersion
Q 10.0 29 2019-09 BuildVersionCodes.Q
Pie 9.0 28 2018-08 BuildVersionCodes.P
Oreo 8.1 27 2017-12 BuildVersionCodes.OMr1
Oreo 8.0 26 2017-08 BuildVersionCodes.O
Nougat 7.1 25 2016-12 BuildVersionCodes.NMr1
Nougat 7.0 24 2016-08 BuildVersionCodes.N
Marshmallow 6.0 23 2015-08 BuildVersionCodes.M
Lollipop 5.1 22 2015-03 BuildVersionCodes.LollipopMr1
Lollipop 5.0 21 2014-11 BuildVersionCodes.Lollipop
Kitkat Watch 4.4W 20 2014-06 BuildVersionCodes.KitKatWatch
Kitkat 4.4 19 2013-10 BuildVersionCodes.KitKat
Jelly Bean 4.3 18 2013-07 BuildVersionCodes.JellyBeanMr2
Jelly Bean 4.2-4.2.2 17 2012-11 BuildVersionCodes.JellyBeanMr1
Jelly Bean 4.1-4.1.1 16 2012-06 BuildVersionCodes.JellyBean
Ice Cream Sandwich 4.0.3-4.0.4 15 2011-12 BuildVersionCodes.IceCreamSandwichMr1
Ice Cream Sandwich 4.0-4.0.2 14 2011-10 BuildVersionCodes.IceCreamSandwich
Honeycomb 3.2 13 2011-06 BuildVersionCodes.HoneyCombMr2
Honeycomb 3.1.x 12 2011-05 BuildVersionCodes.HoneyCombMr1
Honeycomb 3.0.x 11 2011-02 BuildVersionCodes.HoneyComb
Gingerbread 2.3.3-2.3.4 10 2011-02 BuildVersionCodes.GingerBreadMr1
Gingerbread 2.3-2.3.2 9 2010-11 BuildVersionCodes.GingerBread
Froyo 2.2.x 8 2010-06 BuildVersionCodes.Froyo
Eclair 2.1.x 7 2010-01 BuildVersionCodes.EclairMr1
Eclair 2.0.1 6 2009-12 BuildVersionCodes.Eclair01
Eclair 2.0 5 2009-11 BuildVersionCodes.Eclair
Donut 1.6 4 2009-09 BuildVersionCodes.Donut
Cupcake 1.5 3 2009-05 BuildVersionCodes.Cupcake
Base 1.1 2 2009-02 BuildVersionCodes.Base11
Base 1.0 1 2008-10 BuildVersionCodes.Base

4. 小结

本节对 Android 系统的背景及结构做了一个简单的讲解,旨在让大家有一个基本的认识,如果感兴趣的话可以查阅相关资料进行深入了解。下一章我们将带着大家完成开发环境的搭建,这也是进入开发之前的必经之路。

环境搭建,开发相关
Android 系统背景及结构概述 Android 开发环境搭建 Genymotion 的安装与使用 Android 工程解析及使用 Android 程序签名打包
常用 UI 布局
Android 的 UI 根基 View与View Android 线性布局 LinearLayout Android相对布局RelativeLayout Android 表格布局 TableLayout Android 网格布局 GridLayout Android 帧布局 FrameLayout Android绝对布局AbsoluteLayout
基础控件
Android 文本框 TextView Android 文本输入框 EditText 按钮 Button/ImageButton 选择框 RadioButton/Check 开关控件ToggleButton/Switch Android 图片控件 ImageView Android 进度条 ProgressBar Android 拖动条 SeekBar Android 评分条 RatingBar Android 滚动条 ScrollView 轮播滚动视图 ViewFlipper
Adapter 相关控件
Android 适配器 Adapter Android 列表控件 ListView Android 网格视图 GridView Android 下拉选择框 Spinner 自动补全文本框 AutoCompleteText 折叠列表 ExpandableListView
提示类控件
吐司提示:Toast 的使用方法 状态栏通知:Notification 对话框:AlertDialog 悬浮窗:PopupWindow
菜单类控件
菜单:Menu
其他控件
视频页面:ViewPager 侧滑菜单:DrawerLayout
事件处理机制
基于监听的事件处理机制 Handler 消息传递机制 触摸事件分发处理 AsyncTask:异步任务 Android 手势处理
Android 四大组件
活动:Activity 服务:Service 广播接收器:Broadcast Receiver 内容提供者 - Content Provider
数据存储
文件存储 SharedPreferences 存储 数据库:SQLite 的使用
网络编程
HTTP 使用详解 xml 数据解析 JSON 数据解析 网页视图:WebView Socket 网络接口
绘图与动画
图片资源:Drawable 位图:Bitmap
多媒体开发
媒体播放器:MediaPlayer 相机:Camera 音频录制:MediaRecorder
并发编程
多线程