ToB企服应用市场:ToB评测及商务社交产业平台
标题:
【Android】Android体系性学习——Android体系架构
[打印本页]
作者:
刘俊凯
时间:
2024-8-12 12:02
标题:
【Android】Android体系性学习——Android体系架构
媒介
部门内容参考《Android进阶解密》 – 刘望舒
1. Android版本
官方链接:https://developer.android.com/studio/releases/platforms
内里有各个版本的官方文档,有些新功能的用法在这内里。
现在做安卓11,偶然候必要向下兼容
2. AOSP 和 ATV
Android体系根据是否必要认证分为AOSP体系和ATV体系。
AOSP: Android开源体系,全称为Android Open Source Project
ATV: 产物依照 Android TV 制式尺度提供统一的操作体验,并且通过Google 认证。
2.1 AOSP
界说:AOSP是指Android开源项目,它是由Google发起并维护的一个开源软件项目,旨在提供一个开放、自由、可定制的移动操作体系。
特点:AOSP是Android的原始代码库,包括Android操作体系的焦点代码、应用程序框架、体系应用和工具等。它是开放源代码的,任何人都可以访问、查看和下载AOSP的源代码,并根据必要进行修改和定制。
用途:AOSP作为Android操作体系的基础,被广泛用于移动设备、平板电脑、智能手表、智能电视、汽车娱乐体系等各种设备。开发者可以基于AOSP构建自己的Android发行版,或者为特定设备进行定制开发。
更多表明:
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
界说:Android TV是一种Android操作体系的变种,专门设计用于智能电视和媒体播放器。它是AOSP的一个派生版本,经过了针对大屏幕电视的定制和优化。
特点:Android TV保留了Android操作体系的焦点特性,如Android应用程序生态体系、多媒体播放功能、网络毗连和互联网访问等。但它还具有专门针对电视观看体验的用户界面和交互方式,包括遥控器支持、大屏幕适配、焦点导航等。
用途:Android TV被广泛应用于智能电视、电视机顶盒、媒体播放器和游戏机等娱乐设备。用户可以通过Android TV访问各种应用程序,观看视频内容、播放游戏、浏览互联网等,从而将智能功能引入电视屏幕。
3. Android机顶盒硬件原理框图及Android机顶盒不支持的功能
主控,EMMC,DDR,GPIO,USB,HDMI,Tuner,网口,WiFi,蓝牙,红外等
不支持的功能:触摸屏,电话,相机,NFC,GPS等移动功能
第一章 Android体系架构
1.1 Android平台架构
官方文档:https://developer.android.com/guide/platform
Android体系架构分为五层:从上到下依次是应用层、应用架构层、体系运行库层、硬件抽象层和Linux内核层,如图:
1.1.1 应用层(System Apps)
体系内置的应用程序以及非体系级的应用程序都属于应用层,负责与用户进行直接交互,通常都是用Java进行开发的。
1.1.2 应用框架层(Java API Framework)
API (Application Programming Interface)
应用框架层为开发人员提供了开发应用程序所必要的API,我们寻常开发应用程序都是调用这一层所提供的API,固然也包括体系应用。这一层是由Java代码编写的,可以称为Java Framework。下面来看这一层所提供的主要组件:
1.1.3 体系运行库层
从Android体系框架图上可以看出,体系运行库层分为两部门,分别是 C/C++ 程序库和 Android 运行时库,下面分别进行介绍:
(1)原生C/C++程序库
(2)Android运行时库
运行时库又分为焦点库和ART(5.0体系之后,Dalvik虚拟机被ART取代)。焦点库提供了Java语言焦点库的大多数功能,如许开发者可以使用Java语言来编写Android应用。相较于JVM,Dalvik虚拟机是专门为移动设备定制的,答应在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik 应用作为一个独立的Linux 进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。而替代Dalvik虚拟机的ART 的机制与Dalvik 差异。在Dalvik下,应用每次运行的时候,字节码都必要通过即时编译器转换为机器码,这会拖慢应用的运行服从,而在ART 环境中,应用在第一次安装的时候,字节码就会预先编译成机器码,使其成为真正的本地应用。
1.1.4 硬件抽象层(HAL / HIDL)
硬件抽象层是位于操作体系内核与硬件电路之间的接口层,其目标在于将硬件抽象化,为了保护硬件厂商的知识产权,它隐蔽了特定平台的硬件接口细节,为操作体系提供虚拟硬件平台,使其具有硬件无关性,可在多种平台上进行移植。 从软硬件测试的角度来看,软硬件的测试工作都可分别基于硬件抽象层来完成,使得软硬件测试工作的并行进行成为可能。通俗来讲,就是将控制硬件的动作放在硬件抽象层中。
1.1.5 Linux内核层
Android 的焦点体系服务基于Linux 内核,在此基础上添加了部门Android专用的驱动。体系的安全性、内存管理、进程管理、网络协议栈和驱动模型等都依赖于该内核。
Android体系的五层架构就讲到这,了解以上的知识对以后分析体系源码有很大的资助。
1.2 Android体系源码目次
学习Android体系源码,必要把握体系源码目次。可以访问下面的毗连来阅读体系源码
https://android.googlesource.com/
至于Android体系源码目次可以参考:
Android体系五层架构
1.2.1 整体结构
各个版本的源码目次根本是雷同的,如果是编译后的源码目次,会多一个out文件夹,用来存储编译产生的文件。Android 11 的体系目次如下:
可以看出,体系源码分类清楚,并且内容庞大且复杂。接下来分析packages中的内容,也就是应用层部门
1.2.2 应用层部门
应用层位于整个Android体系的最上层,开发者开发的应用程序以及体系内置的应用程序都是在应用层。源码根目次中的packages目次对应着体系应用层。它的目次结构如表
暂时无法在飞书文档外展示此内容
从目次结构可以发现,packages目次存放着体系焦点应用程序、第三方的应用程序和输入法等等,这些应用都是运行在体系应用层的,因此packages目次对应着体系的应用层。
1.2.3 应用框架层部门
应用框架层是体系的焦点部门,一方面向上提供接口给应用层调用,另一方面向下与C/C++程序库以及硬件抽象层等进行衔接。 应用框架层的主要实现代码在/frameworks/base和/frameworks/av目次下,此中/frameworks/base目次结构如表
1.2.4 C/C++程序库部门
体系运行库层(Native)中的 C/C++程序库的范例繁多,功能强大,C/C++程序库并不完全在一个目次中,这里给出几个常用且比力重要的C/C++程序库地点的目次位置。
讲完 C/C++程序库部门,剩下的部门我们已经给出:Android运行时库的代码放在art/目次中。硬件抽象层的代码在hardware/目次中,这一部门是手机厂商改动最大的一部门,根据手机终端所采用的硬件平台会有差异的实现。
1.3 源码阅读
这里有Android10 的源码:https://www.androidos.net.cn/android/10.0.0_r6/xref
Android 7.1 到 Android 13 的体系源码:http://aospxref.com
下载源码:https://source.android.google.cn/docs/setup/download?hl=zh-cn
源码提交:https://android.googlesource.com/platform/manifest
https://blog.csdn.net/cjohn1994/article/details/127467165
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4