sydMobile 为开源世界贡献一份力量

从0系统学 Android--1.1认识 Android

2019-07-21
sydMobile

一转眼工作也有几年的时间了,一直想沉下心来,再回过头来重新系统的学习一遍 Android。所以就有了这个读书笔记。俗话说温故而知新,下面就请大家再跟着我系统的学习一篇 Android 吧!

声明

这一系列主要参考 Android 入门经典—-《第一行代码》

默认学习者会简单的 Java 语法!Android 方面完全从零开始!跟着我系统的学习吧!

认识 Android

2003 年 10 月,Andy Rubin 等人一起创办了 Android 公司。2005 年 8 月 Google 收购了这家公司。

1.1 了解 Android 全貌

Android 从面试以来到现在已经发布了二十多个版本了。在这几年的发展过程中。谷歌为 Android 王国建立了一个完整的生态系统。手机厂商、开发者、用户之间相互依存,共同推进着 Android 的蓬勃发展。

从开发者角度,去了解这个操作系统。

1.1.1 Android 系统架构

为了让你能够更好的理解 Android 系统是如何工作的,我们先来看一下它的系统架构。大致可分四层架构:Linux 内核层、系统运行库层、应用框架层、应用层。

1.Linux 内核层

Android 系统是基于 Linux 内核的,这一层为 Android 设备的各种硬件提供了底层的驱动,比如:显示驱动、音频驱动、照相机驱动、蓝牙驱动、WiFi 驱动、电源管理等。

主要是一些底层驱动

2.系统运行库层

这一层通过一些 C/C++ 库来为 Android 系统提供了主要的特征支持。如 SQLite 库提供了数据库的支持、OpenGL ES 库提供了 3D绘图支持,Webkit 库提供了浏览器内核的支持等。

同样这一层还有 Android 运行时库。主要提供了一些核心库,能够使开发者使用 Java 语言来编写 Android 应用。Android 运行时库还包含了 Dalvik 虚拟机(5.0 系统之后改为了 ART 运行环境),它使得每一个 Android 应用都可以运行在独立的进程中,并且拥有一个自己的 Dalvik 虚拟机示例。相比 Java 虚拟机。Dalvik 虚拟机是专门为移动设备定制的,针对手机内存、CPU 性能有限等情况作了优化处理。

一些通过 C/C++ 编写的库,还有支持我们使用 Java 开发的核心库和进程运行的虚拟机

3.应用框架层

主要提供了构建应用程序时用到的各种 API,Android 自带的一些核心应用就是使用这些 API 完成的,开发者也可以使用这些 API 来构建我们自己的应用程序。

4.应用层

所有安装在手机上的应用程序就是属于这一层了。

最新架构

  • Linux 内核

    Android 平台的基础是 Linux 内核。例如,Android Runtime 需要依靠 Linux 内核来执行底层功能,例如线程和底层内存管理

    使用 Linux 内核可以让 Android 利用主要安全功能,并且允许设备制造商为著名的内核开发硬件驱动程序。

  • 硬件抽象层(HAL)

    提供标准界面,向更高级别的 Java API 框架显示设备硬件功能。HAL 包含多个库模块,其中每个模块都为特定类型的硬件组件实现一个界面。例如相机或蓝牙模块。当框架 API 要求访问硬件时,Android 系统为该硬件组件加载库模块。

  • Android Runtime

    对于运行 Android 5.0 或者更高设备,每个应用都在其自己的进程中运行,并且有自己的 Android Runtime 示例。ART 编写为通过执行 DEX 文件在低内存设备上运行的多个虚拟机。DEX 文件是一种专门为 Android 设计的字节码格式,经过优化,使用内存很少。编译工具链(例如 Jack)将 Java 源代码编译为 DEX 字节码,使其可以在 Android 平台上运行。

    ART 的部分主要功能:

    • 预先(AOT)和即时(JIT)编译
    • 优化垃圾回收(GC)
    • 更好的调试支持,包括专用采样分析器、详细的诊断异常、崩溃报告

    还包含了一套核心运行时库,可提供 Java API 框架使用的 Java 编程语言大部分功能。

  • 原生 C/C++ 库

    许多核心 Android 系统组件和服务(例如 ART 和 HAL)是构建自原生代码的,需要用 C 和 C++ 编写的原生库。Android 平台提供 Java 框架 API 来向应用显示其中的部分原始库的功能。例如:通过 Android 框架 的 Java OpenGL API 访问 OpenGL ES,以支持应用中绘制和操作 2D 和 3D图形。

    如果开发的是需要 C 或 C++ 代码的应用,可以使用 Android NDK 直接从原生代码访问某些原生平台库

  • Java API 框架

    您可通过以 Java 语言编写的 API 使用 Android OS 的整个功能集。这些 API 形成创建 Android 应用所需的构建块,它们可简化核心模块化系统组件和服务的重复使用,包括以下组件和服务:

    • 丰富、可扩展的视图系统,可用以构建应用的 UI,包括列表、网格、文本框、按钮甚至可嵌入的网络浏览器
    • 资源管理器,用于访问非代码资源,例如本地化的字符串、图形和布局文件
    • 通知管理器,可让所有应用在状态栏中显示自定义提醒
    • Activity 管理器,用于管理应用的生命周期,提供常见的导航返回栈
    • 内容提供程序,可让应用访问其他应用(例如“联系人”应用)中的数据或者共享其自己的数据

    开发者可以完全访问 Android 系统应用使用的框架 API

  • 系统应用

1.1.2 Android 已发布的版本

2008 年 9 月,Google 正式发布了 Android 1.0 系统。

2011 年 2 月,发布了 Android 3.0 系统,专门为平板电脑设计的,比较失败。

2011 年 10 月 Android 4.0 ,这个版本不再对手机和平板进行差异化区分。

2014 年 Google I/O 大会上,推出了改动最大的 Android 5.0 系统。使用 ART 运行环境代替了 Dalvik 虚拟机,大大提升了应用的运行速度,提出了 Material Design 概念。还推出了 Android Wear、Android Auto、Android TV 系统。从而进军可穿戴设备、汽车、电视等领域。

2015 年 Google I/O 大会,推出 6.0 加入运行时权限功能。

2016 年 Google I/O 大会上推出 7.0 系统 ,加入多窗口模式

1.1.3 Android 应用开发特色

1. 四大组件

Activity、Server、Broadcast Receiver、Content Provider

Activity:应用程序的门面。

Server:默默的在后头运行

Broadcast Receiver 运行你的应用接受来自各处的广播消息,比如:电话、短信等,同样我们的应用也可以向外部发送广播消息。

Content Provider 应用程序之间共享数据提供了可能。比如读取系统电话簿中的联系人。

2. 丰富的系统控件

系统提供了丰富的系统控件,使我们轻松的编写漂亮的界面。当然我们也可以自己定义控件。

3. SQLite 数据库

系统自带了轻量级、运算速度快的嵌入式关系型数据库,支持标准的 SQL 语句,还可以通过 Android 封装好的 API 进行操作。

4. 强大的多媒体

提供了丰富的多媒体服务。如:音乐、视频、录音、拍照、闹铃。等等,这一切我们都可以在程序中通过代码来进行控制。

5. 地理位置定位

使用内置的 GPS 就可以定位到自己的位置


目录
关注微信公众号,获取更多干货
微信公众号:Android开发者家园