大家好,欢迎来到IT知识分享网。
前言
部分内容参考《Android进阶解密》 – 刘望舒
1. Android版本
2. AOSP 和 ATV
Android系统根据是否需要认证分为AOSP系统和ATV系统。
- AOSP: Android开源系统,全称为Android Open Source Project
- ATV: 产品依照 Android TV 制式标准提供统一的操作体验,并且通过Google 认证。
2.1 AOSP
- AOSP是安卓开源项目,是一个由Google收购并开源的手机操作系统项目(主要协议是Apache 2.0),基于Linux内核核心代码,截至目前大量安卓阵型的手机厂商以及上下游供应商参与了安卓项目的开发,主要包括华为、索尼、三星、Intel、高通等,其中华为是安卓项目代码贡献全球前三名的厂商。
- AOSP是手机操作系统的核心代码,但不是全部。手机操作系统需要在AOSP基础上,增加各种硬件驱动、软件框架层、以及各类系统应用,才能成为我们通常所说的手机操作系统。所以,AOSP通常是指安卓手机操作系统的“内核”。在安卓手机的系统描述中,通常有一个“内核版本”,即为AOSP。
- 安卓系统通常即为AOSP,安卓手机描述的Powered by Android,这里的Android即是AOSP。由谷歌定期牵头发布的安卓大版本也是指AOSP。AOSP是免费提供给所有手机厂商使用的。
- 目前安卓阵营各厂商(除了华为)并不只是使用了免费的AOSP,还使用了谷 歌发布的收费的GMS(谷歌服务框架)以及谷歌的各类APP(等等)。虽然国内手机可以不使用谷歌app,但是由于早期GMS属于AOSP,因此大量的安卓App依赖了GMS的许多功能接口,随着后期谷歌把大批GMS代码从AOSP项目移出转为收费GMS(这段历史也是促使华为启动自研鸿蒙的重要原因之一),所以谷歌几乎控制了整个安卓生态。这也是为什么安卓标榜是免费开源项目而所有厂商都离不开谷歌的核心原因。
- 所以,一般意义上的“安卓”是指:AOSP + GMS,这两者构成了安卓开发者使用的基础SDK,也是几乎所有安卓App的基础。其中,AOSP开源免费,GMS商用收费。
- 鸿蒙(HarmonyOS)是由华为开发的开源手机操作系统项目,对标的是AOSP,同样基于Linux内核核心库,并使用了AOSP部分开源代码用于安卓app兼容(符合Apache开源协议)。由于鸿蒙并没有直接使用AOSP软件,因此这是一个独立开源项目,最直接而言不需要Powered by Android。类比Linux也使用了Minix的部分代码,AOSP也使用了Linux部分代码,但他们都是一个新的独立项目一个道理。
- 华为手机操作系统包括HarmonyOS + HMS,后者是对标谷歌GMS的商业产品,用于支持开发者为华为手机开发App。由于HMS是后来者,因此HMS许多接口设计也是尽量兼容GMS,跟鸿蒙兼容AOSP一个道理。如果鸿蒙只是Fork AOSP,拉个分支的话,在开源圈子里就没有前途了。鸿蒙目前主打的是整体架构上与AOSP不同(是微内核架构,AOSP是宏内核),以及集成了分布式计算框架(用于手机与其他设备的互联,典型如手表、车、家电、耳机等),这也是鸿蒙1+8+N大生态的技术基础。而谷歌也在研发一个类似的终端操作系统(内部被称为安卓第二)Fushia。
- 由于手机应用生态很大程度依赖GMS,为了海外市场,所以小米、OPPO、Vivo、一加等厂不大可能全部使用HMS,很大一部分可能,中低端使用鸿蒙系统,高端继续使用安卓,差异化竞争。当然,如果鸿蒙用户反馈很好的话,不排除高端机也使用鸿蒙的可能性。毕竟鸿蒙的目标主要是在“万物互联”的智慧生活。所以,家电、车、可穿戴设备、运动健康等方面才是鸿蒙系统的目标。鸿蒙不只是个手机操作系统,而是个“大终端”操作系统。是未来的大趋势。
2.2 ATV
3. Android机顶盒硬件原理框图及Android机顶盒不支持的功能
- 主控,EMMC,DDR,GPIO,USB,HDMI,Tuner,网口,WiFi,蓝牙,红外等
- 不支持的功能:触摸屏,电话,相机,NFC,GPS等移动功能
第一章 Android系统架构
1.1 Android平台架构
1.1.1 应用层(System Apps)
系统内置的应用程序以及非系统级的应用程序都属于应用层,负责与用户进行直接交互,通常都是用Java进行开发的。
1.1.2 应用框架层(Java API Framework)
1.1.3 系统运行库层
从Android系统框架图上可以看出,系统运行库层分为两部分,分别是 C/C++ 程序库和 Android 运行时库,下面分别进行介绍:
1.1.4 硬件抽象层(HAL / HIDL)
硬件抽象层是位于操作系统内核与硬件电路之间的接口层,其目的在于将硬件抽象化,为了保护硬件厂商的知识产权,它隐藏了特定平台的硬件接口细节,为操作系统提供虚拟硬件平台,使其具有硬件无关性,可在多种平台上进行移植。 从软硬件测试的角度来看,软硬件的测试工作都可分别基于硬件抽象层来完成,使得软硬件测试工作的并行进行成为可能。通俗来讲,就是将控制硬件的动作放在硬件抽象层中。
1.1.5 Linux内核层
1.2 Android系统源码目录
1.2.1 整体结构
各个版本的源码目录基本是类似的,如果是编译后的源码目录,会多一个out文件夹,用来存储编译产生的文件。Android 11 的系统目录如下:
可以看出,系统源码分类清晰,并且内容庞大且复杂。接下来分析packages中的内容,也就是应用层部分
1.2.2 应用层部分
1.2.3 应用框架层部分
1.2.4 C/C++程序库部分
讲完 C/C++程序库部分,剩下的部分我们已经给出:Android运行时库的代码放在art/目录中。硬件抽象层的代码在hardware/目录中,这一部分是手机厂商改动最大的一部分,根据手机终端所采用的硬件平台会有不同的实现。
1.3 源码阅读
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/121614.html