Android 架构(8.0以前)

Android 系统架构包含以下组件:

图 1. Android 系统架构

应用框架

应用框架最常被应用开发者使用。如果您是硬件开发者,则应该了解开发者 API,因为很多此类 API 都会直接映射到底层 HAL 接口,并可提供与实现驱动程序相关的实用信息。

Binder IPC

Binder 进程间通信 (IPC) 机制允许应用框架跨越进程边界并调用 Android 系统服务代码,从而使得高级框架 API 能与 Android 系统服务进行交互。在应用框架级别,开发者无法看到此类通信的过程,但一切都会“按部就班地运行”。

系统服务

系统服务是专注于特定功能的模块化组件,例如窗口管理器、搜索服务或通知管理器。应用框架 API 所提供的功能可与系统服务通信,以访问底层硬件。Android 包含两组服务:“系统”(诸如窗口管理器和通知管理器之类的服务)和“媒体”(与播放和录制媒体相关的服务)。

硬件抽象层 (HAL)

硬件抽象层 (HAL) 会定义一个标准接口来供硬件供应商实现,从而能让 Android 忽略较低级别的驱动程序实现。借助 HAL,您可以顺利实现相关功能,而不会影响或更改更高级别的系统。HAL 实现会被封装成模块,并会由 Android 系统适时地加载。有关详情,请参阅硬件抽象层 (HAL) 一文。

Linux 内核

开发设备驱动程序与开发典型的 Linux 设备驱动程序类似。Android 使用的 Linux 内核版本包含几个特殊的补充功能,例如:Low Memory Killer(一种内存管理系统,可更主动地保留内存)、唤醒锁定(一种 PowerManager 系统服务)、Binder IPC 驱动程序以及对移动嵌入式平台来说非常重要的其他功能。这些补充功能主要用于增强系统功能,不会影响驱动程序开发。

您可以使用任意版本的内核,只要它支持所需功能(如 Binder 驱动程序)即可。不过,我们建议您使用 Android 内核的最新版本。有关详情,请参阅编译内核一文。

Android8.0学习(1)---Android 架构相关推荐

  1. Android8.0 学习 (17)Android国际化(多语言)实现,支持8.0

    Android国际化(多语言)实现,支持8.0 前言 最近因为项目中使用了国际化,所以正好研究了下实现方法: 首先说下项目需求: 可以随着系统切换语言而切换语言,不支持的语言显示默认 用户可以选择语言 ...

  2. android8.0学习(1)---Android Treble 概述

    1 Android Treble Android 8.0 版本的一项新元素是 Project Treble.这是 Android 操作系统框架在架构方面的一项重大改变,旨在让制造商以更低的成本更轻松. ...

  3. Android 8.0学习 (2)---Android HAL

    硬件抽象层 (HAL) HAL 可定义一个标准接口以供硬件供应商实现,这可让 Android 忽略较低级别的驱动程序实现.借助 HAL,您可以顺利实现相关功能,而不会影响或更改更高级别的系统.HAL ...

  4. Android8.0 学习(15)---适配Android 8.0

    Android O 迁移(适配Android 8.0) 现在我们介绍下 Android O新的改动: 通知 在 Android 8.0 中,我们已重新设计通知,以便为管理通知行为和设置提供更轻松和更统 ...

  5. Android8. 0 学习(33)--- msensor移植

    android 8.0 msensor移植 1.驱动移植 A      update/alps/kernel-4.4/drivers/misc/mediatek/sensors-1.0/magneto ...

  6. Android 8.0学习 (36)---Android 8.0 WebView 拍照、简易预览、二维码扫描 各种问题解决

    Android 8.0 WebView 拍照.简易预览.二维码扫描 各种问题解决 项目用到了WebView包装HTML5做成app使用,其中有页面用到了二维码和拍照上传功能.本人从未做过android ...

  7. android8.0电脑壁纸,Android用原生分享多张图片适配7.0、8.0

    常规操作只能适配6.0及以下 直接上分享的代码: Intent share_intent = new Intent(); ArrayList imageUris = new ArrayList(); ...

  8. android8.0桌面快捷方式,Android 8.0 快捷方式Shortcut

    Oreo创建app快捷方式两种方式: v7包:appcompat-v7:26.0.2 ShortcutManager requestPinShortcut() LauncherActivity:点击快 ...

  9. android7虚拟定位,Android8.0还早 EMUI助推Android7.0普及

    5月17日至19日,谷歌2017年开发者大会在加州谷歌总部所在地举办.本次会议当中,最重要产品之一即新一代Android O操作系统(也就是我们所说Android 8.0)成为最大的亮点.最新发布的A ...

最新文章

  1. 学霸学长如何第一时间收到接口报错?不用测试妹子再质疑你是不是接口挂了
  2. Apache Log4j2 RCE 命令执行漏洞预警及修复方案
  3. Android:简单的弹幕效果达到
  4. Dubbo本地开发技巧
  5. online游戏服务器架构--网络架构
  6. 2017-2018 Northwestern European Regional Contest (NWERC 2017)
  7. 计算机网络 原理与实验指导书,《计算机网络原理》实验指导书.doc
  8. HDU 4379 水题,大水,但我WA了很多次,做了很久
  9. MySQL开启日志记录执行过的SQL语句
  10. Atitit 编程语言的分类 v2 目录 1.1. 基于代数划分 第一代。。。第三代。。4gl。。5gl自然语言 1 1.2. 按照编程范式分类 . 命令式语言 .函数式语言...逻辑式语言
  11. foxmail新建文件夹失败或者新建文件夹不显示的问题
  12. [黑客入门全程图解].吴自容,武新华.等编著.文字版,精确还原
  13. java时间格式化工具类_java日期格式化工具类
  14. 计算机数字音乐合成技术 fm,● 计算机数字音乐合成技术主要有(13)两种方式,其中使用(14)合成的音乐,其音质更好。(13)A. FM和AM - 扁豆云问答...
  15. Ralink SDK相关指令总结
  16. 【node.js】一个基于HTPP的服务
  17. 服务器自动打印,小技巧! —让打印机自动承担打印任务
  18. SHERlocked93 的 2019 年终总结
  19. 高德地图H5 定位失败报错 geolocation time out. Get ipLocation failed解决方案
  20. 狄克斯特拉算法(Dijkstra)详细解释

热门文章

  1. 米筐量化不支持c语言_从零开始学量化(三):数据获取途径
  2. 【LeetCode】【HOT】617. 合并二叉树(递归)
  3. 《RabbitMQ 实战指南》第四章 RabbitMQ进阶(上)
  4. 【LeetCode】剑指 Offer 14. 剪绳子
  5. 力扣 342.4的幂
  6. 删除Office系列软件多余激活信息
  7. 机器学习之Adaboost (自适应增强)算法
  8. 第三天,编码设置,主键设置与删除,无关子查询,相关子查询,表与表之间的关系...
  9. mybatis中#{}和${}的区别及order by的sql注入问题
  10. 第一个OpenCV读取图像并显示