第三章首章语

This commit is contained in:
dqzg12300 2023-04-25 20:49:13 +08:00
parent b5c92ebd71
commit 54de9b3ccc

View File

@ -1,62 +1,35 @@
# 第三章 认识系统组件
在上一章的学习中,成功编译了`Android12`以及对应的内核并且通过多种方式刷入手机。接下来需要先对Android源码的根结构有一定的了解对结构有一定了解能有助于更快的定位和分析源码同时能让开发人员更好的理解Android系统。在修改系统时有些简单的功能例如`native`中的文件读写,`java`类型的转换`c++`类型等)并不需要我们重新实现,因为这些需求大多数在`Android`系统源码中都有类似的实现,熟练掌握`Android`系统源码,了解系统中常用的那些功能性函数,可以大大的提高定制系统的效率。在源码的学习过程中,最重要的是,**学习系统源码时,碰到问题,要学会跳过,很多时候是需要经历过一遍遍学习和实践后,才能完全理解其中的含义。**
## 3.1 源码结构介绍
在上一章的学习中成功编译了Android12以及对应的内核并且通过多种方式刷入手机。接下来需要先对Android源码的根结构有一定的了解对结构有一定了解能有助于更快的定位和分析源码同时能让开发人员更好的理解Android系统
`Android`源码结构分为四个主要的模块:`frameworks、packages、hardware、system``frameworks`模块是`Android`系统的核心,包含了`Android`系统的核心类库、`Java`框架和服务,它是`Android`开发的基础。`packages`模块包括了`Android`系统的应用程序,主要是用户使用的应用程序,例如通讯录、日历和相机。`hardware`模块提供了对硬件设备的支持,例如触摸屏、摄像头等。最后,`system`模块包含了`Linux`内核和`Android`底层服务,它负责管理资源和处理系统事件。除了这些主要模块,`Android`源码中还有一些其他的文件夹,例如`build、external、prebuilts``tools`等,他们提供了编译系统所需的资源和工具。接下来,看看根目录的基本结构
Android源码结构分为四个主要的模块frameworks、packages、hardware、system。frameworks模块是Android系统的核心包含了Android系统的核心类库、Java框架和服务它是Android开发的基础。packages模块包括了Android系统的应用程序主要是用户使用的应用程序例如通讯录、日历和相机。hardware模块提供了对硬件设备的支持例如触摸屏、摄像头等。最后system模块包含了Linux内核和Android底层服务它负责管理资源和处理系统事件。除了这些主要模块Android源码中还有一些其他的文件夹例如build、external、prebuilts和tools等他们提供了编译系统所需的资源和工具。接下来看看根目录的基本结构。
1、art该目录是Android 5.0中新增加的主要是实现Android RunTimeART的目录它作为Android 4.4中的Dalvik虚拟机的替代主要处理Java字节码。
2、bionic这是Android的C库包含了很多标准的C库函数和头文件还有一些Android特有的函数和头文件。
3、bootable包含了一些用于生成引导程序相关代码的工具和脚本以及引导程序相关的一些源代码但并不包含完整的引导程序代码。
4、build该目录包含了编译Android源代码所需要的脚本包括makefile文件和一些构建工具。
5、compatibility该目录收集了Android设备的兼容性测试套件CTS和兼容性实现Compatibility Implementation
6、cts该目录包含了Android设备兼容性测试套件CTS主要用来测试设备是否符合Android标准。
7、dalvik该目录包含了Dalvik虚拟机它是Android 2.3版本之前的主要虚拟机它主要处理Java字节码。
8、developers该目录包含了Android开发者文档和样例代码。
9、development该目录包含了一些调试工具如systrace、monkey、ddms等。
10、device该目录包含了特定的Android设备的驱动程序。
11、external该目录包含了一些第三方库如WebKit、OpenGL等。
12、frameworks该目录提供了Android应用程序调用底层服务的API它也是Android应用程序开发的重要组成部分。
13、hardware该目录包含了Android设备硬件相关的驱动代码如摄像头驱动、蓝牙驱动等。
14、kernel该目录包含了Android系统内核的源代码它是Android系统的核心部分。
15、libcore该目录包含了Android底层库它提供了一些基本的API如文件系统操作、网络操作等。
16、libnativehelper该目录提供了一些C++库,它们可以帮助调用本地代码。
17、packages该目录包含了Android框架、应用程序和其他模块的源代码。 包含了 Android 系统中的所有应用程序,例如短信、电话、浏览器、相机等
18、pdk该目录是一个Android平台开发套件它包含了一些工具和API以便开发者快速开发Android应用程序。
19、platform_testing该目录包含了一些测试工具用于测试Android平台的稳定性和性能。
20、prebuilts该目录包含了一些预先编译的文件如编译工具、驱动程序等。
21、sdk该目录是Android SDK的源代码它包含了Android SDK的API文档、代码示例、工具等。
22、system该目录包含了Android系统的核心部分如系统服务、应用程序、内存管理机制、文件系统、网络协议等。
23、test该目录包含了一些测试代码用于测试Android系统的各个组件。
24、toolchain该目录包含了一些编译器和工具链如GCC、Clang等用于编译Android源代码。
25、tools该目录包含了一些开发工具如Android SDK工具、Android Studio、Eclipse等。
26、vendor该目录包含了一些硬件厂商提供的驱动程序如摄像头驱动、蓝牙驱动等。
1. `art`:该目录是`Android 5.0`中新增加的,主要是实现`Android RunTimeART`的目录,它作为`Android 4.4`中的`Dalvik`虚拟机的替代,主要处理`Java`字节码。
2. `bionic`:这是`Android``C`库,包含了很多标准的`C`库函数和头文件,还有一些`Android`特有的函数和头文件。
3. `build`:该目录包含了编译`Android`源代码所需要的脚本,包括`makefile`文件和一些构建工具。
4. `compatibility`:该目录收集了`Android`设备的兼容性测试套件`CTS`和兼容性实现`Compatibility Implementation`
5. `cts`该目录包含了Android设备兼容性测试套件`CTS`,主要用来测试设备是否符合`Android`标准。
6. `dalvik`:该目录包含了`Dalvik`虚拟机,它是`Android 2.3`版本之前的主要虚拟机,它主要处理`Java`字节码。
7. `developers`:该目录包含了`Android`开发者文档和样例代码。
8. `development`:该目录包含了一些调试工具,如`systrace、monkey、ddms`等。
9. `device`:该目录包含了特定的`Android`设备的驱动程序。
10. `external`:该目录包含了一些第三方库,如`WebKit、OpenGL`等。
11. `frameworks`:该目录提供了`Android`应用程序调用底层服务的`API`
12. `hardware`:该目录包含了`Android`设备硬件相关的驱动代码,如摄像头驱动、蓝牙驱动等。
13. `kernel`:该目录包含了`Android`系统内核的源代码,它是`Android`系统的核心部分。
14. `libcore`:该目录包含了`Android`底层库,它提供了一些基本的`API`,如文件系统操作、网络操作等。
15. `packages`:该目录包含了`Android`框架、应用程序和其他模块的源代码。 包含了`Android`系统中的所有应用程序,例如短信、电话、浏览器、相机等
16. `pdk`:该目录是一个`Android`平台开发套件,它包含了一些工具和`API`以便开发者快速开发Android应用程序。
17. `platform_testing`:该目录包含了一些测试工具,用于测试`Android`平台的稳定性和性能。
18. `prebuilts`:该目录包含了一些预先编译的文件,如编译工具、驱动程序等。
19. `sdk`:该目录是`Android SDK`的源代码,它包含了`Android SDK``API`文档、代码示例、工具等。
20. `system`:该目录包含了`Android`系统的核心部分,如系统服务、应用程序、内存管理机制、文件系统、网络协议等。
21. `test`:该目录包含了一些测试代码,用于测试`Android`系统的各个组件。
22. `toolchain`:该目录包含了一些编译器和工具链,如`GCC、Clang`等,用于编译`Android`源代码。
23. `tools`:该目录包含了一些开发工具,如`Android SDK`工具、`Android Studio、Eclipse`等。
24. `vendor`:该目录包含了一些硬件厂商提供的驱动程序,如摄像头驱动、蓝牙驱动等。
并不需要全部记下,只要大致的有个印象,当你常常为了实现某个功能,查阅翻读源码时,就会不断加深你对这些目录划分的了解,回顾一下第二章中,在编译源码的过程中下载了两个驱动相关的文件。回顾下图。