android系统体系架构
android体系架构#
安卓底层是基于Linux内核的,上层还包括硬件抽象层。然后就是应用层模块包括Native层,Android运行时环境,JAVA API框架以及系统/用户app。
JAVA层通过JNI技术与native层通讯,而native通过syscall系统调用与内核层通讯
Linux内核#
linux内核主要的任务就是进行基本的内存管理,进程管理,系统初始化等工作。
硬件抽象层(HAL)#
硬件抽象层包含多个模块,框架API请求访问硬件时就会加载相应的模块,例如蓝牙/wifi等。
native层#
native层其实就相当于windows中的应用层,so就等价于dll。
Android Runtime#
Android runtime运行时主要包含android虚拟机(Dalvik/ART)和系统核心库。系统核心库是为java api frameword服务的,包含了对应的java API 的JNI接口函数的实现。
Java API Framework层#
framework框架层主要包含了通过java语言编写的API接口。例如:android/util/Log中实现的是一些日志打印JAVA接口,app应用程序在使用java编写的时候可以通过导入这个类并调用对应的Log接口函数,实际这个接口函数是一个native方法,其会通过JNI调用对应的接口函数(在jni/android_util_Log.cpp中),然后此接口函数会通过syscall调用内核中对应的系统服务实现日志的相关操作。简言之,framework层相当于是一个第三方库,然后其对应接口JAVA API函数的实现都在native层(系统so库),当android 虚拟机在执行到对应接口 API方法时就会去对应的系统so库中寻找。
应用层#
应用层包含用户应用和系统应用,这些应用都以apk的形式保存。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界