Android 系统架构,真心不敢说讲解或者解释。只能说学习了解。
今天,我只是简单的学习了解一些非常基本和简单的介绍。
说到Android,大多数人的理解就是app。但是,Android并不是app,app只是Android的一个很小的部分。所以,看到很多网文说,Android快死了,要被h5干掉了的时候,真的觉得可笑。h5只会干掉那些只会写界面的Android程序员。
ok,话不多说,开始今天的学习吧。
Android,做Android的同学都是知道的,Android是用java写的(准确来说是用javaAPI,虽然现在用kotlin了,但是,依然调用的是javaAPI),但是,调用javaAPI之后,又干了什么?可能有些同学就不知道了。就像是,tv.settext("内容"),我们知道界面会出现“内容”,但我们不知道为什么会出现内容,或者说,为什么调用这句话,就会出现内容。其实,我也不是很清楚,我只能用自己的理解,参考Android官方文档,去解释。
首先,引入Android系统架构的概念:Android系统架构分为五层,从上到下依次是应用层、应用框架层、系统运行库层、硬件抽象层和Linux内核层。
这里,我盗图一下:如下图,我们的app其实就是在第一层。
当我们的app调用某个api的时候,其实是调用framework层的某个指令(方法)
,framewoek层对应的指令,又会向下传递(调用),
调用Native层(系统运行库层,这一层其实就是虚拟机层,这一层会将javaAPI“转换”为字节码,再将字节码“转换”为机器码)
然后再将机器码向下传递,给硬件抽象层(这一层,其实就是硬件接口层,是一层抽象)
最终的实现,其实是Linux内核层,这一层才能真正的调用硬件,让硬件干事情(当然,这里就是我的盲区了)
ok,最后总结一下;
应用层:系统内置的应用程序以及非系统级的应用程序都是属于应用层,主要负责与用户进行直接交互,比如计算器,qq等app
应用框架层:javaAPI,就是我们写app时,调用的那些自带的api,activity.finish()
系统运行库层: C/C++程序库比如多媒体播放器,Android运行时库 ,其实就是ART虚拟机(5.0系统之后,Dalvik虚拟机被ART取代,其实可以理解为JVM)
硬件抽象层(HAL):硬件抽象层是位于操作系统内核与硬件电路之间的接口层,其目的在于将硬件抽象化,就是将控制硬件的动作放在硬件抽象层中。
Linux 内核:Android 的核心系统服务基于Linux 内核,在此基础上添加了部分Android专用的驱动。系统的安全性、内存管理、进程管理、网络协议栈和驱动模型等都依赖于该内核。
下一篇,我想详细学习了解一下jvm虚拟机中,类加载过程。