学习Android 系统需要什么前置知识
- Java , c/c++, jni
- 有一定的app开发基础最好
- 有一定的linux系统编程基础
- 有一定的网络编程基础
学习些啥
framework
Ams, wms, ims, pkms, Powper Manager Service
Android与Linux的比较
Android 与 Linux 的相同与不同点
Android 和 Linux 虽然同样基于 Linux 内核,但在设计理念、使用场景和功能实现上存在显著区别。Android 作为专门为移动设备设计的操作系统,具有独特的功能和框架,而 Linux 则作为广泛应用于服务器、桌面和嵌入式系统的操作系统,强调通用性和开放性。以下是对两者从架构到市场影响等多方面的详细比较。Android 和 Linux 虽然同样基于 Linux 内核,但在设计理念、使用场景和功能实现上存在显著区别。Android 作为专门为移动设备设计的操作系统,具有独特的功能和框架,而 Linux 则作为广泛应用于服务器、桌面和嵌入式系统的操作系统,强调通用性和开放性。以下是对两者从架构到市场影响等多方面的详细比较。
1. 操作系统架构
1.1 Linux 的架构
Linux 操作系统是一种基于 POSIX 标准的类 Unix 系统,具有模块化的架构设计。其基本架构由 内核层、系统调用接口 (System Call Interface)、C 库 (如 glibc)、用户空间的 shell 和各种应用程序组成。Linux 的模块化设计允许灵活的模块加载和卸载,并支持各种硬件平台。
学习路径如下

Android 与 Linux 的相同与不同点
Android 和 Linux 虽然同样基于 Linux 内核,但在设计理念、使用场景和功能实现上存在显著区别。Android 作为专门为移动设备设计的操作系统,具有独特的功能和框架,而 Linux 则作为广泛应用于服务器、桌面和嵌入式系统的操作系统,强调通用性和开放性。以下是对两者从架构到市场影响等多方面的详细比较。
1. 操作系统架构
1.1 Linux 的架构
Linux 操作系统是一种基于 POSIX 标准的类 Unix 系统,具有模块化的架构设计。其基本架构由 内核层、系统调用接口 (System Call Interface)、C 库 (如 glibc)、用户空间的 shell 和各种应用程序组成。Linux 的模块化设计允许灵活的模块加载和卸载,并支持各种硬件平台。
1.2 Android 的架构
Android 的架构是在 Linux 内核之上构建的,并加入了特有的组件。其分层结构通常包含 Linux 内核层、硬件抽象层 (HAL)、Android 运行时 (Android Runtime, ART)、系统服务层 和 应用框架 (Application Framework)。在 Android 中,系统服务和硬件抽象层是为了实现移动设备特性而设计的,便于移动应用快速高效地调用系统资源。
2. 内核层的比较
2.1 内核版本与优化
Android 的内核源自 Linux 内核,但进行了一系列的改动。例如,Android 引入了 低内存杀手 (Low Memory Killer) 和 电源管理框架,以便更好地适应移动设备的低内存和高续航需求。此外,Android 的内核移植时间相对较长,通常滞后于最新的 Linux 内核版本,目的是更好地保障其兼容性和稳定性。
2.2 驱动支持
在 Linux 中,硬件厂商通常直接为内核开发驱动程序,而 Android 则在此之上增加了 硬件抽象层 (HAL)。HAL 允许设备厂商在不更改 Android 系统的情况下,添加特定硬件的兼容性支持。这种设计减少了 Android 系统的碎片化问题,增强了设备兼容性。
3. 应用层与运行环境
3.1 Linux 应用层
Linux 的用户空间通常由 shell、桌面环境和各种应用组成。用户可以通过 包管理器 (如 APT、YUM) 安装、卸载或更新应用。Linux 应用程序依赖于 glibc 和 系统调用接口,并通过 shell 或 GUI 桌面管理。
3.2 Android 应用层
Android 的应用层基于 Java 语言构建,开发者通过 Android SDK 开发应用,应用在 ART 虚拟机中运行,或使用 Native 开发 Kit (NDK) 直接调用底层库。Android 应用使用 APK 格式分发,并严格隔离应用,确保不同应用间的安全性。Android 的应用管理机制更符合移动设备的使用习惯,通过 Google Play 或其他应用商店安装和更新。
4. 文件系统和存储管理
4.1 Linux 文件系统
Linux 支持多种文件系统,如 EXT4、XFS、Btrfs 等,用户可以根据不同需求选择适合的文件系统。此外,Linux 提供了完善的磁盘管理工具和权限管理系统,使得文件系统可以方便地管理、挂载和卸载。
4.2 Android 文件系统
Android 默认使用 EXT4 或者 F2FS 文件系统,且在移动设备上加入了 分区挂载 机制,例如 /data、/system、/cache 等分区。为了增强设备的读写性能,Android 的存储系统经过优化,以便在闪存介质上有效地工作。Android 还加入了沙盒机制,使每个应用有自己的独立存储空间,应用间的文件隔离更为严格。
5. 安全机制
5.1 Linux 的安全机制
Linux 具有完善的多用户权限管理体系,默认采用 DAC (Discretionary Access Control) 权限控制模型,并提供了 SELinux、AppArmor 等强制访问控制机制,广泛应用于高安全需求的服务器和嵌入式系统。
5.2 Android 的安全机制
Android 在 Linux 安全机制之上增加了适合移动设备的多层安全框架。Android 使用 应用沙盒 来隔离每个应用,并基于 用户 ID (UID) 机制,使每个应用在独立的进程空间中运行。Android 引入了 SELinux 强制访问控制机制以增强系统级别的安全性,并通过 Google Play 的 应用审核机制 和 权限管理系统 来确保应用的行为安全性。
6. 应用场景与市场影响
6.1 Linux 的应用场景
Linux 因其稳定性和开放性,广泛应用于服务器、云计算、桌面操作系统、物联网和嵌入式系统等领域。Linux 强调跨平台兼容性和开放源码,适合高性能计算和对安全性要求较高的企业级场景。
6.2 Android 的应用场景
Android 专为移动设备设计,目标是为智能手机、平板电脑、智能电视、可穿戴设备等提供灵活的操作环境。Android 的移动设备市场占有率高达 70% 以上,基于其成熟的生态系统和应用商店,Android 成为了移动应用和服务的主流平台。
总结
Android 和 Linux 同根同源
Linux 注重系统的开放性、稳定性和可移植性,广泛应用于服务器和桌面端;
Android 在 Linux 内核之上加入了移动设备的特殊优化,使其成为适合移动场景的智能操作系统。这种差异使得 Android 更加专注于用户体验和应用生态,而 Linux 则专注于性能、兼容性和多场景适用性。



2748

被折叠的 条评论
为什么被折叠?



