Android 各层架构
Android应用框架层和硬件抽象层以及底层之间的关系
1. JNI技术:
(1).JNI技术简单的说就是在本地Java语言声明本地方法和加载动态链接库(.so文件)
(2).动态链接库(.so文件)是由NDK编译C/C++文件而成的。
2. HAL层开发:
(1).HAL是Hardware Abstraction Layer的简称。也称为硬件抽象层。
(2).硬件访问服务是在Framework层实现的。
(3).硬件访问服务是用Java语言实现的,硬件抽象层是用C++语言编写的。因此硬件访问服务必须通过JNI技术调用硬件抽象层的接口。
(4).硬件抽象层调用Linux Kernel底层的接口。
3. Android HAL存在的主要原因:
(1).并不是所有的硬件设备都有标准的Linux Kernel的接口。
(2).某些设备制造商并不希望公开硬件驱动,所以采用HAL开发的方式。
(3).针对某些硬件,Android有一些特殊的需求。
附图:

注:
Android包含一个C/C++库的集合,使Android系统的各个组件使用。
这些功能通过Android的应用框架层暴露给开发者。
Android 各层架构的更多相关文章
- [转]Android App整体架构设计的思考
1. 架构设计的目的 对程序进行架构设计的原因,归根到底是为了提高生产力.通过设计使程序模块化,做到模块内部的高聚合和模块之间的低耦合.这样做的好处是使得程序在开发的过程中,开发人员只需要专注于一点, ...
- Android入门(二):Android的系统架构
android的系统架构和其操作系统一样,采用了分层的架构.从架构图看,android分为四个层,从高层到低层分别是应用程序层.应用程序框架层.系统运行库层和linux核心层. 从技术方面看,An ...
- Android系统的架构
android的系统架构和其操作系统一样,采用了分层的架构.从架构图看,android分为四个层,从高层到低层分别是应用程序层.应用程序框架层.系统运行库层和linux核心层. 1.应用程序 Andr ...
- Android 控件架构及View、ViewGroup的测量
附录:示例代码地址 控件在Android开发的过程中是必不可少的,无论是我们在使用系统控件还是自定义的控件.下面我们将讲解一下Android的控件架构,以及如何实现自定义控件. 1.Android控件 ...
- Android 的系统架构
Android 的系统架构 Android其本质就是在标准的Linux系统上增加了Java虚拟机Dalvik,并在Dalvik虚拟机上搭建了一个JAVA的application framework,所 ...
- Android App的架构设计:从VM、MVC、MVP到MVVM
随着Android应用开发规模的扩大,客户端业务逻辑也越来越复杂,已然不是简单的数据展示了.如同后端开发遇到瓶颈时采用的组件拆分思想,客户端也需要进行架构设计,拆分视图和数据,解除模块之间的耦合,提高 ...
- Android系统四层架构分享
Android系统四层架构 个人网站:http://www.51pansou.com Android视频下载:Android视频 Android源码下载:Android源码 如果把Android系统看 ...
- Android的系统架构
转自Android的系统架构 从上图中可以看出,Android系统架构为四层结构,从上层到下层分别是应用程序层.应用程序框架层.系统运行库层以及Linux内核层,分别介绍如下: 1)应用程序层 ...
- Android各层推荐开发书籍及参考资料
Android各层推荐开发书籍及参考资料 转自:http://blog.csdn.net/fancylovejava/article/details/8657058 Android系统按照架构来说一共 ...
- 实时Android语音对讲系统架构
本文属于Android局域网内的语音对讲项目系列,<通过UDP广播实现Android局域网Peer Discovering>实现了局域网内的广播及多播通信,本文将重点说明系统架构,音频信号 ...
随机推荐
- HarmonyOS 应用生命周期有哪些? 按返回键会调用哪些生命周期?
UIAbility 生命周期: onCreate :页面初始化,变量定义,资源加载. onWindowStageCreate:设置 UI 界面加载.设置 WindowStage 的事件订阅. onFo ...
- SonarQube+Maven+SonarQube Scanner
1.SonarQube简介 官方网站地址:https://www.sonarqube.org/ SonrQube是一个开源的代码质量管理系统,用于检测代码中的错误,漏洞和代码规范.它可以以现有的Git ...
- WebGL实现简易的局部“马赛克”
前言 接触过Canvas的小伙伴应该都知道,在Canvas2D中我们要加载一个图片很简单,通过调用drawImage API就能将图像绘制到画布上,当然在WebGL中我们也可以绘制图像,在绘制时我们需 ...
- 如何用python运用ocr技术来识别文字
要先安装ocr技术,也就是光学符号识别,通过扫描等光学输入方式将各种票据.报刊.书籍.文稿及其他印刷品的文字转化为图像信息,再利用文字识别技术将图像信息转化为可以使用的文本的技术(我在百度百科抄的), ...
- goframe v2.1.0 gf-cli的使用
目录 1.视频教程 2.官方文档 3.下载 linux系统安装环境 windows系统安装环境 4.创建项目 5.启动项目 6.交叉编译 7.gen命令的使用 8.orm的操作 1.视频教程 http ...
- linux用户与用户组管理
linux用户与用户组管理 目录 linux用户与用户组管理 1.linux用户管理 1.1 用户基础 1.2 /etc/passwd:用户信息文件 1.3 /etc/shadow:用户密码信息文件 ...
- Django 自定义管理命令:从入门到高级
title: Django 自定义管理命令:从入门到高级 date: 2024/5/16 18:34:29 updated: 2024/5/16 18:34:29 categories: 后端开发 t ...
- XML Schema 复杂元素类型详解:定义及示例解析
在XML Schema(XSD)中,复杂元素是指包含其他元素和/或属性的XML元素.复杂元素可以分为四种类型: 空元素: 仅包含其他元素和/或属性的元素. 仅包含其他元素的元素: 不包含文本内容,只包 ...
- FFmpeg开发笔记(二十二)FFmpeg中SAR与DAR的显示宽高比
<FFmpeg开发实战:从零基础到短视频上线>一书提到:通常情况下,在视频流解析之后,从AVCodecContext结构得到的宽高就是视频画面的宽高.然而有的视频文件并非如此,如果按照A ...
- 服务器root密码忘记,使用centos7 紧急模式修改root密码
一.实战场景 公司一台centos7服务器root密码忘记了,需要你修改root密码,找回root身份. 二.进入紧急模式修改root密码 首先重启服务器,看到这界面时选择第一项,按下e键进行编辑 2 ...