Android学习笔记

疯狂Android讲义


文章目录

  • Android学习笔记
  • 疯狂Android讲义
  • 第1章 Android 应用和开发环境
  • 1.1 Android的发展和历史
  • 1.1.1 Android的发展和简介
  • 1.1.2 Android 9.x平台架构及特性


第1章 Android 应用和开发环境

1.1 Android的发展和历史

1.1.1 Android的发展和简介

Android并不是Google创造的,而是 Android公司创造的,该公司的创始人是Andy Rubin。该公司后来被Google收购,而Andy Rubin也成为Google公司的Android产品负责人。

事实上,Android已经超出了手机操作系统的范畴,Android 系统已经广泛应用于TV、手表,以及各种可穿戴设备。

1.1.2 Android 9.x平台架构及特性

Android系统的底层建立在Linux系统之上,该平台由操作系统、中间件、用户界面和应用软件4层组成,它采用一种被称为软件叠层(Software Stack)的方式进行构建。这种软件叠层结构使得层与层之间相互分离,明确各层的分工。这种分工保证了层与层之间的低耦合,当下层的层内或层下发生改变时,上层应用程序无须任何改变。

官方架构图:

https://developer.android.com/guide/platform

android与ios发展史 简述android的发展史_学习

从上至下:

  • 系统App层
    Android 随附一套用于电子邮件、短信、日历、互联网浏览和联系人等的核心应用。平台随附的应用与用户可以选择安装的应用一样,没有特殊状态。因此第三方应用可成为用户的默认网络浏览器、短信 Messenger 甚至默认键盘(有一些例外,例如系统的“设置”应用)。
    系统应用可用作用户的应用,以及提供开发者可从其自己的应用访问的主要功能。例如,如果您的应用要发短信,您无需自己构建该功能,可以改为调用已安装的短信应用向您指定的接收者发送消息。
  • Java API框架层
    您可通过以 Java 语言编写的 API 使用 Android OS 的整个功能集。这些 API 形成创建 Android 应用所需的构建块,它们可简化核心模块化系统组件和服务的重复使用,包括以下组件和服务:
  • 丰富、可扩展的视图系统,可用以构建应用的 UI,包括列表、网格、文本框、按钮甚至可嵌入的网络浏览器
  • 资源管理器,用于访问非代码资源,例如本地化的字符串、图形和布局文件
  • 通知管理器,可让所有应用在状态栏中显示自定义提醒
  • Activity 管理器,用于管理应用的生命周期,提供常见的导航返回栈
  • 内容提供程序,可让应用访问其他应用(例如“联系人”应用)中的数据或者共享其自己的数据

官方框架API文档:https://developer.android.com/reference/packages

android与ios发展史 简述android的发展史_android与ios发展史_02

  • 原生C/C++库
    许多核心 Android 系统组件和服务(例如 ART 和 HAL)构建自原生代码,需要以 C 和 C++ 编写的原生库。Android 平台提供 Java 框架 API 以向应用显示其中部分原生库的功能。例如,您可以通过 Android 框架的 Java OpenGL API 访问 OpenGL ES,以支持在应用中绘制和操作 2D 和 3D 图形。
    如果开发的是需要 C 或 C++ 代码的应用,可以使用 Android NDK 直接从原生代码访问某些原生平台库。
    一些原生C/C++库:
  • WebKit:一个全新的Web浏览器引擎,该引擎为Android浏览器提供支持,也为 WebView提供支持,WebView完全可以嵌入开发者自己的应用程序中。
  • OpenMAX(开放媒体加速层):其目的在于使用统一的接口,加速处理大量多媒体资料。其中最上层为OpenMAX AL (App Layer),该层代表App和多媒体中间层的标准接使得 App在多媒体接口上具有良好的可移植性。
  • Libc(系统C库):一个从BSD系统派生的标准C系统库,并且专门为嵌入式 Linux设备调整过。
  • Media Framework(媒体框架):基于PacketVideo的OpenCORE,这套媒体库支持播放和录制许多流行的音频和视频格式,以及查看静态图片。它主要包括 MPEG4、H.264、MPAAC、AMR、JPG、 PNG等多媒体格式。
  • SGL:底层的2D图形引擎。
  • OpenGL ES:基于OpenGL ES API实现的3D系统,这套3D库既可使用硬件3D加速(如果硬件系统支持的话),也可使用高度优化的软件3D加速。
  • SQLite:供所有应用程序使用的功能强大的轻量级关系数据库。
  • Android Runtime 【Android运行时】
    对于运行 Android 5.0(API 级别 21)或更高版本的设备,每个应用都在其自己的进程中运行,并且有其自己的 Android Runtime (ART) 实例。ART 编写为通过执行 DEX 文件在低内存设备上运行多个虚拟机,DEX 文件是一种专为 Android 设计的字节码格式,经过优化,使用的内存很少。编译工具链(例如 Jack)将 Java 源代码编译为 DEX 字节码,使其可在 Android 平台上运行。
    ART 的部分主要功能包括:
  • 预先 (AOT) 和即时 (JIT) 编译
  • 优化的垃圾回收 (GC)
  • 在 Android 9(API 级别 28)及更高版本的系统中,支持将应用软件包中的 Dalvik Executable 格式 (DEX) 文件转换为更紧凑的机器代码。
  • 更好的调试支持,包括专用采样分析器、详细的诊断异常和崩溃报告,并且能够设置观察点以监控特定字段

在 Android 版本 5.0(API 级别 21)之前,Dalvik 是 Android Runtime。如果您的应用在 ART 上运行效果很好,那么它应该也可在 Dalvik 上运行,但反过来不一定。

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

Android 6.0的重要更新是运行时权限,使得App能在安装之后动态地请求获取相关权限;Android 7.0的重要更新则是多窗口模式。

  • 硬件抽象层 HAL
    硬件抽象层 (HAL) 提供标准界面,向更高级别的 Java API 框架显示设备硬件功能。HAL 包含多个库模块,其中每个模块都为特定类型的硬件组件实现一个界面,例如相机或蓝牙模块。当框架 API 要求访问设备硬件时,Android 系统将为该硬件组件加载库模块。
  • Linux内核
    Android 平台的基础是 Linux 内核。例如,Android Runtime (ART) 依靠 Linux 内核来执行底层功能,例如线程和低层内存管理。
    使用 Linux 内核可让 Android 利用主要安全功能,并且允许设备制造商为著名的内核开发硬件驱动程序。