【读书笔记】 第一篇 Android编译篇
- 读书笔记 第一篇 Android编译篇
- 第一章 Android系统简介
- 1Android各版本代号及发布时间
- 2 Android系统的特点
- 3 Android系统框架
- 第二章 Android源码下载
- 第三章 Android编译系统
第一章 Android系统简介
1.1Android各版本代号及发布时间:
Code Name | Version | Api Level | Release Time |
(no code name) | 1.0 | API Level 1 | |
(no code name) | 1.1 | API Level 2 | |
Cupcake(纸杯蛋糕) | 1.5 | API Level 3,NDK 1 | 2009.4.30 |
Donut(甜甜圈) | 1.6 | API Level 4 | 2009-09-15 |
Eclair(泡芙) | 2 2.0.1 2.1 | API Level 5 API Level 6 API Level 7 | 2009-10-26 2009-12-03 2010-01-12 |
Froyo(冻酸奶) | 2.2 2.2.1 2.2.2 2.2.3 | API Level 8 API Level 8 API Level 8 API Level 8 | 2010-05-20 2011-01-18 2011-01-22 2011-11-21 |
Gingerbread(姜饼) | 2.3 2.3.1 2.3.2 2.3.3 2.3.4 2.3.5 2.3.6 2.3.7 | API level 9 API level 9 API level 9 API level 10 API level 10 API level 10 API level 10 API level 10 | 2010-12-06 2010-12 2011-01 2011-02-09 2011-04-28 2011-07-25 2011-09-02 2011-09-21 |
Honeycomb(蜂巢) | 3 3.1 3.2 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 | API level 11 API level 12 API level 13 API level 13 API level 13 API level 13 API level 13 API level 13 API level 13 | 2011-02-22 2011-05-10 2011-07-15 - - - 2011-12 2012-01 2012-02 |
Ice Cream Sandwich(冰激凌三明治) | 4 4.0.1 4.0.2 4.0.3 4.0.4 | API level 14 API level 14 API level 14 API level 15 API level 15 | 2011-10-18 2011-10-21 2011-11-28 2011-12-16 2012-03-29 |
Jelly Bean(果冻豆) | 4.1 4.1.1 4.1.2 4.2 4.2.1 4.2.2 4.3 4.3.1 | API level 16 API level 16 API level 16 API level 17 API level 17 API level 17 API level 18 API level 18 | 2012-07-09 2012-07-11 2012-10-09 2012-11-13 2012-11-27 2013-02-11 2013-07-24 2013-10-03 |
KitKat(奇巧) | 4.4 4.4.1 4.4.2 4.4.3 4.4.4 4.4W 4.4W.1 4.4W.2 | API level 19 API level 19 API level 19 API level 19 API level 19 API level 20 API level 20 API level 20 | 2013-10-31 2013-12-05 2013-12-09 2014-06-02 2014-06-19 2014-06-25 2014-09-06 2014-10-21 |
Lollipop(棒棒糖) | 5 5.0.1 5.0.2 5.1 5.1.1 | API level 21 API level 21 API level 21 API level 22 API level 22 | 2014-11-12 2014-12-02 2014-12-19 2015-03-09 2015-04-21 |
Marshmallow(棉花糖) | 6 6.0.1 | API level 23 API level 23 | 2015-10-05 2015-12 |
Nougat(牛轧糖) | 7.0 7.1.1 | API level 23 API level 24 | 2016-08-22 2016-10 |
O | 8.0 | API level 26 | 2017-3-21 |
1.2 Android系统的特点
- 开放与扩展
- 合理的分层结构
- 易用强大的SDK
- 不断改进的交互界面
- 逐步完善的生态系统
- 阵营良莠不齐
- 系统运行速度有待改善
- 兼容性问题
1.3 Android系统框架
Linux 内核
Android 平台的基础是 Linux 内核。例如,Android Runtime (ART) 依靠 Linux内核来执行底层功能,例如线程和低层内存管理。使用 Linux 内核可让 Android 利用主要安全功能,并且允许设备制造商为著名的内核开发硬件驱动程序。
硬件抽象层 (HAL)
硬件抽象层 (HAL) 提供标准界面,向更高级别的 Java API 框架显示设备硬件功能。HAL包含多个库模块,其中每个模块都为特定类型的硬件组件实现一个界面,例如相机或蓝牙模块。当框架 API 要求访问设备硬件时,Android系统将为该硬件组件加载库模块。Android Runtime
对于运行 Android 5.0(API 级别21)或更高版本的设备,每个应用都在其自己的进程中运行,并且有其自己的 Android Runtime (ART) 实例。ART编写为通过执行 DEX 文件在低内存设备上运行多个虚拟机,DEX 文件是一种专为 Android设计的字节码格式,经过优化,使用的内存很少。编译工具链(例如 Jack)将 Java 源代码编译为 DEX 字节码,使其可在 Android平台上运行。ART 的部分主要功能包括:
- 预先 (AOT) 和即时 (JIT) 编译
- 优化的垃圾回收 (GC)
- 更好的调试支持,包括专用采样分析器、详细的诊断异常和崩溃报告,并且能够设置监视点以监控特定字段
在 Android 版本 5.0(API级别 21)之前,Dalvik 是 Android Runtime。如果您的应用在 ART 上运行效果很好,那么它应该也可在 Dalvik上运行,但反过来不一定。
Android 还包含一套核心运行时库,可提供 Java API 框架使用的 Java 编程语言大部分功能,包括一些 Java 8语言功能。原生 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。
系统应用
Android随附一套用于电子邮件、短信、日历、互联网浏览和联系人等的核心应用。平台随附的应用与用户可以选择安装的应用一样,没有特殊状态。因此第三方应用可成为用户的默认网络浏览器、短信 Messenger 甚至默认键盘(有一些例外,例如系统的“设置”应用)。
系统应用可用作用户的应用,以及提供开发者可从其自己的应用访问的主要功能。例如,如果您的应用要发短信,您无需自己构建该功能,可以改为调用已安装的短信应用向您指定的接收者发送消息。
第二章 Android源码下载
请参考google官方网站:https://source.android.com/source/downloading
第三章 Android编译系统
请参考ggogle官方网站:https://source.android.com/source/building
备注:我感觉对于要研究Android源代码的同志,必须要把https://source.android.com/source/requirements网站认真看一下,官方对于Android源代码编译环境搭建、源代码下载、源代码编译以及Jack编译介绍的非常详细,国内好多人的文章也只是把那一份搬过来而已。