更新第一章部分语句

This commit is contained in:
feiocng 2022-12-02 16:41:13 +08:00
parent 360b665960
commit ca247f4e0e

View File

@ -12,11 +12,11 @@
![android_framework_details](images/android_framework_details.png)
对于新手而言,刚开始接触安卓源码时,对于很多基础理论性的知识都是懵懵懂懂的。这些基础并不需要我们完全的记住,只需要大概有这么一个分层和他们之间依赖关系的印象即可,等以后经常实战多了,再回过头,温故一下理论部分,就会茅塞顿开了。
对于新手而言,刚开始接触安卓源码时,对于很多基础理论性的知识都是懵懵懂懂的。这些基础并不需要我们完全的记住,只需要大概有这么一个概念,以及了解它们之间依赖关系的印象即可,等以后实践多了,再过头看这部分内容,温故一下理论部分,就会茅塞顿开了。
Apps就是我们日常开发的应用层我们使用手机日常安装的应用游戏等等都属于这一层普通应用基本都在手机的目录`/data/app`中。包括AOSP提供的系统APP也是属于应用层的例如相机、短信、图库等等`/system/app`目录下的应用。应用层直接对接用户的输入操作和输出展示。这里的输入指的是,我们对手机进行的操作,例如点击屏幕,手机上的按键,所有我们对手机进行的操作行为,统称为一种输入。而输出指的是,手机接收到我们的输入行为后的一种反馈,例如屏幕亮了,页面刷新等等所有通过手机展示给你看到的,都算是手机的输出。
Apps就是我们日常开发的应用层我们使用手机日常安装的应用游戏等等都属于这一层普通应用基本都在手机的目录`/data/app`中。包括AOSP提供的系统APP,也是属于应用层。例如相机、短信、图库,`/system/app`目录下的应用。应用层直接对接用户的输入操作和输出展示。这里的输入指的是,我们对手机进行的操作,例如点击屏幕,手机上的按键,所有我们对手机进行的操作行为,统称为一种输入。而输出指的是,手机接收到我们的输入行为后的一种反馈,例如屏幕亮了,页面刷新等等所有通过手机展示给你看到的,都算是手机的输出。
Framework框架层这里简单介绍一下框架的概念在我们开发中很多功能是多数开发人员所共同需求的基础功能这些功能是作为一个智能手机系统所必备的基础部分例如查询sim卡信息跨进程的通信窗口的管理等等这个部分就是框架由基础组建而成的摩天大楼。普通应用就像是这栋大楼的住户所以和应用打交道最多的就是基础功能为我们提供在开发应用时所用到的API和组件支持。如果你是一名安卓开发人员相信这里是你在开发中接触最多的部分。下面简单列举几个框架层中的关键组件。
Framework框架层。这里简单介绍一下框架的概念在我们开发中很多功能是多数开发人员所共同需求的基础功能这些功能是作为一个智能手机系统所必备的基础部分例如查询sim卡信息跨进程的通信窗口的管理等等这个部分就是框架由基础组建而成的摩天大楼。普通应用就像是这栋大楼的住户所以和应用打交道最多的就是基础功能为我们提供在开发应用时所用到的API和组件支持。如果你是一名安卓开发人员相信这里是你在开发中接触最多的部分。下面简单列举几个框架层中的关键组件。
1. **Activity Manager**是Android最核心的部分它负责了系统中四大组件的启动、调度、管理。所有的Activity的生命周期都是在它的范畴。
@ -26,7 +26,7 @@
4. **Window Manager**窗口程序管理组件
当应用层调用管理组件后管理组件会进而调用对应的Service来执行相应的函数。简单来说就是XXX Manager基本是提供给应用层调用真正的处理逻辑是在XXX Service中处理。如下图
当应用层调用管理组件后管理组件会进而调用对应的Service来执行相应的函数。简单来说就是XXX Manager基本是提供给应用层调用真正的处理逻辑是在XXX Service中处理。如下图所示
![manager_service](images/manager_service.png)
@ -38,18 +38,19 @@ cp /system/framework/framework.jar /sdcard/
adb pull /sdcard/framework.jar ./
```
然后使用jadx打开将`framework.jar`文件
然后使用jadx打开将`framework.jar`文件,如下图所示:
![jadx_framework](images/jadx_framework.png)
Native Libraries层就是字面意思c++库的支持比如比较典型的libc、ssl、opengl等等。
5. **Native Libraries**。字面意思C/C++库的原生支持库比如比较典型的libc、ssl、opengl等等。
Android Runtime是安卓运行时库安卓中最核心的ART虚拟机就是在这个部分。虽然android开发常常使用的是java但是android开发的应用并不是运行在JVM虚拟机中而是类似的针对dex结构的Dalvik虚拟机和ART虚拟机。在android4.4之后逐渐使用ART虚拟机全面替代了Dalvik虚拟机。
6. **Android Runtime**。安卓的运行时库安卓中最核心的ART虚拟机就是在这个部分。虽然android开发常常使用的是java但是android开发的应用并不是运行在JVM虚拟机中而是类似的针对dex结构的Dalvik虚拟机和ART虚拟机。在android4.4之后逐渐使用ART虚拟机全面替代了Dalvik虚拟机。
HAL硬件抽象层主要作用于系统内核与硬件之间的接口具有提供给硬件供应商实现的标准接口。往往用来做硬件的驱动程序开发。也有个说法是因为硬件供应商不愿意自身的驱动放在内核中被一起开源。所以单独抽出了HAL层来对接硬件驱动。
7. **HAL硬件抽象层**。主要作用于系统内核与硬件之间的接口具有提供给硬件供应商实现的标准接口。往往用来做硬件的驱动程序开发。也有个说法是因为硬件供应商不愿意自身的驱动放在内核中被一起开源。所以单独抽出了HAL层来对接硬件驱动。
8. **Linux内核**。系统的最重要的核心部分内核负责与设备底层的硬件进行交互。比如显示驱动、音频驱动、WIFI驱动、电源驱动、内存管理、进程管理等等。
Linux内核系统的最重要的核心部分内核负责与设备底层的硬件进行交互。比如显示驱动、音频驱动、WIFI驱动、电源驱动、内存管理、进程管理等等。
## 1.2 系统开发,定制,刷机,改机分别是什么