• android系统体系架构


    android体系架构


    安卓底层是基于Linux内核的,上层还包括硬件抽象层。然后就是应用层模块包括Native层,Android运行时环境,JAVA API框架和系统和用户app。
    JAVA层通过JNI技术与native层通讯,而native通过syscall系统调用与内核层通讯

    Linux内核

    linux内核主要的任务就是进行基本的内存管理,进程管理,系统初始化等等工作。

    硬件抽象层(HAL)

    硬件抽象层包含多个模块,框架API请求访问硬件时就会加载相应的模块,例如蓝牙/wifi等。

    native层(系统库)

    native主要是一些java层的依赖库,有点类似于windows平台的ntdll.dll,java层通过native与linux内核层通讯。

    Android Runtime

    Android runtime运行时主要包含android虚拟机(Dalvik/ART)和系统核心库。 在app进程空间中实际android虚拟机 与native的so库都在用户空间中不重叠。(android虚拟机可以理解在windows的exe映射空间,而native的so库相当于在windows的DLL映射空间中,而dex文件被android 虚拟机相当于数据一样加载到内存空间中,并解析对应的字节码并执行)。系统核心库是为java api frameword服务的,包含了对应的javaAPI 的JNI接口函数的实现。

    Java API Framework层

    framework框架层主要包含了通过java语言编写的API接口,这些API可以完成构建和使用android应用程序必须的一些组件,例如activity活动。例如:android/util/Log中实现的是一些日志打印JAVA接口,app应用程序在使用java编写的时候可以通过导入这个类并调用对应的Log接口函数,实际这个接口函数是一个native方法,其会通过JNI调用对应的JNI接口函数(在jni/android_util_Log.cpp中),然后此接口函数会通过syscall调用内核中对应的系统服务实现日志的相关操作。简言之,framework层相当于是一个第三方库,然后其对应接口JAVA API函数的实现都在native层(系统so库),当android 虚拟机在执行到对应接口 API方法时就会去对应的系统so库中寻找。

    应用层

    应用层包含系统应用和系统应用,这些应用都以apk的形式保存。

    android系统系统启动过程

  • 相关阅读:
    Linux命令行和Shell脚本编程
    Excel自动触发时间
    dom4j读取xml文件 简单例子
    GSM & Foxit Reader
    ThreadPoolExecutor 线程池
    Linux /var/log
    delphi开发技巧
    利用ScktSrvr打造多功能Socket服务器
    delphi中Windows消息大全使用详解
    自己构造注入点方便入侵
  • 原文地址:https://www.cnblogs.com/revercc/p/16128201.html
Copyright © 2020-2023  润新知