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

更多相关文章

  1. Android图
  2. Android(安卓)Frameworks系列(一) startService启动
  3. Unity和Android互相调用方法
  4. Android(安卓)学习笔记——利用JNI技术在Android中调用、调试C++
  5. Android(安卓)AsyncTask完全解析
  6. Flutter笔记(二)
  7. 利用HTML5开发Android笔记(中篇)
  8. Android启动(1)启动过程概述
  9. 【Android】动态链接库so的加载原理

随机推荐

  1. go语言中一些字符串操作介绍
  2. go语言通过命令方式生成可执行文件
  3. golang如何获取客户端ip?
  4. Golang 和 JS 怎么交互?
  5. golang如何删除文件?
  6. go语言中控制并发数量的方法
  7. 常见的 Go 处理字符串的技巧
  8. golang如何做一个服务器?
  9. 优雅的实现 Golang REST API 架构
  10. 使用 Go 来构建一个 CLI 程序