Android 系统架构了解学习

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虚拟机中,类加载过程。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 157,776评论 24 688
  • 转载请注明出处(https://www.jianshu.com/p/5f538820e370),您的打赏是小编继续...
    福later阅读 17,846评论 7 45
  • 版权声明:本文为作者原创,转载必须注明出处。转载请注明出处:https://www.jianshu.com/p/c...
    Stan_Z阅读 3,014评论 3 14
  • 阳光下,雪反射出刺眼的光, 打破了冰雪世界童话般的美好。雪地上发出“吱吱…”的响声是那般的清脆,回眸望去,睫...
    听雨yl阅读 114评论 0 1
  • 多的时候,是拿着手机给这个人抑或那个人留言,而有没过停下来几分钟,真正问问自己,现在过得好吗?
    米安静阅读 73评论 0 0