Android 架构剖析和机能分析(1)

Android 架构剖析和机能分析

前言

Android 架构剖析是从静态的角度分析 Android 的架构,而 Android 机能分析是从动态的分析Android 是如何启动以及各个层次是如何交互的,以下是 Android 的架构图。我们按照自底向下的方法来分析。

android架构图

Android 架构——内核

· Android 是基于 Linux 内核,当 Android 本身不是 Linux
· 没有本地的窗口系统
· 没有 Glibc 的支持
· 没有包括完整的标准的 Linux 工具集
· Standard Linux 2.6.24 Kernel
· 标准的 Linux 内核(
· 为了支持 Android 打上了内核优化补丁

为什么使用 Linux
· 优越的内存和进程管理功能
· 基于权限的安全模式
·被认可的驱动模式
· 支持共享库
· 代码开源

内核优化
为了支持 Android,Android 的主线内核做了相应优化,主要体现在下面几个方面:
· Alarm
· Ashmem
· Binder
· Power Management
· Low Memory Killer
· Kernel Debugger
· Logger

Binder
为什么要引入 Binder
· 应用程序虽然以独立的进程运行,但相互之间需要通信
· IPC 会增加进程的开销并导致安全漏洞
解决方法:
·用驱动程序来推进进程间通信
· 通过共享内存来提高性能
· 为进程请求分配每进程线程池
· 引用计数、跨进程的对象引用映射
across processes
· 进程间同步调用

Binder 如何实现:
binder的实现
Android Interface Definition Language (AIDL android标准跨进程接口语言) 详细介绍见http://code.google.com/android/reference/aidl.html

AIDL IPC 机制是面向接口的,和 COM 以及 corba 类似,但相比之下更加轻量级,它用 proxy 类来传递值。

能耗管理 Problem
· 移动设备通过电池供能
电池容量有限Android 的解决方案
· 基于标准的 Linux 能耗管理
·增加了更加好的能耗管理策略
· 组件通过申请唤醒锁来保持电源打开
· 支持不同类型的唤醒锁
电源管理

Android 架构——本地库:

本地库包括四个部分
· Bionic Libc
· Function Libraries
· Native Servers
· Hardware Abstraction Libraries

Bionic Libc
· What is bionic? 什么是 bionic
·定制的 C 库函数实现,并为嵌入式应用做了优化
为什么定制 libc 库
· License: 在用户空间不使用 GPL
· Size: 最大程度的减少代码空间
· Fast:有限的 CPU 能耗,要求我们能运行的更快
· 内置的对 Android 特有的服务的支持
·对系统属性的支持函数
getprop(“my.system.property”, buff, default);
· 对日志系统的支持函数
LOGI(“Logging a message with priority ‘Info’”);
· 不支持模型 POSIX 特征
· 与 GNU libc 不兼容
· 所有的本地代码都必须依靠 bionic 支持,而不是 glibc

功能库:

Webkit:
基于开源的 Webkit 浏览器
· Renders pages in full (desktop) view
· Full CSS, Javascript, DOM, AJAX support 支持 CSS,JAVASCRIPT,DOM 等脚本语言
· Support for single-column and adaptive view rendering
Media Framework
· 基于 PacketVideo OpenCORE 平台
· 支持标准视频、音频、静态帧格式
· 支持硬件/软件编解码插件
SQLite
· Light-weight transactional data store
· Back end for most platform data storage

Native Servers

Surface Flinger:
·提供系统范围的皮肤设计,处理所有与帧缓冲设备相关的皮肤
· 能够合并 2D 和 3D surfaces,以及来自多个应用程序的surfaces
· surfaces通过 Binder IPC 传递给缓冲器
· 可以使用 OpenGL ES 和 2D 硬件加速器进行皮肤设计
· 双缓冲技术

surfaces
Audio Flinger:
· 管理所有的音频输出设备
· 处理 PCM 音频输出通道的多音频流
· 处理音频从不同途径输出
在这里插入图片描述

Hardware Abstraction Libraries
· 用户空间的 C/C++库
· 定义了 Android 对硬件驱动要求的接口实现
· 将 Android 的平台逻辑和硬件接口分离
为什么需要一个用户空间的 HAL
· 不是所有的部件都有标准的内核驱动接口
· Kernel drivers are GPL which exposes any proprietary IP
· Android 对硬件驱动有特定的要求

Andorid 运行时

Dalvik 虚拟机
· Android 特有的纯净的虚拟机实现
· 保障了可移植性和运行时的一致性
· 以优化的.dex 文件格式运行
· Jave 的.class / .jar 文件在编译时转化为.dex
· 为嵌入式开发环境设计
· 支持多虚拟机进程
· 高度 CPU 优化的字节码解释程序
· 能够高效的使用运行时内存

Core Libraries 核心库
· 核心的 Java 语言 API,提供了一个强大的、简单的、属性的开发平台
· Data structures
· Utilities
· File access
· Network Access
· Graph

Application Framework

Core Platform Services(核心平台服务)
· 提供 Android 平台的关键服务
· 在后台工作-----应用程序一般不直接访问
包括以下的服务:
· Activity Manager --活动管理
· Package Manager --包管理
· Window Manager --窗口管理
· Resource Manager --资源管理
· Content Providers --内容管理
· View System --视窗系统

Hardware Services (硬件服务)
· 提供对底层硬件访问的 API
· 一般通过本地 Manager 对象访问
包括以下服务
· Telephony Service --电话服务
· Location Service --定位服务
· Bluetooth Service --蓝牙服务
· WiFi Service --WiFi 服务
· USB Service --USB 服务
· Sensor Service --红外传感器服务

关于应用程序框架的详细内容可以参照一下文档:
· At Google I/O
· “Inside the Android Application Framework”

对于 Android 的架构分析到这里就完了,下一章动态分析 Android 的机理

  • 24
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Android 的音频设计架构主要包括以下几个方面: 1. Audio HAL Audio HAL 是 Android 音频架构的底层,它提供了一组抽象接口,使应用程序和音频驱动程序之间可以进行通信。音频 HAL 由硬件制造商提供,包含针对特定硬件的驱动程序,用于处理音频输入和输出。 2. AudioFlinger AudioFlinger 是 Android 音频架构中的音频服务,它负责音频播放和录制的管理。它是一个服务进程,负责协调应用程序和音频驱动程序之间的通信,并控制音频流的混合和路由。 3. Audio Policy Service Audio Policy Service 是一个系统服务,它负责处理音频策略,包括音频路由、音量控制等。它可以根据不同的应用程序和设备状态来制定不同的音频策略。 4. Audio Effects Android 支持多种音频效果,如均衡器、重低音增强器、虚拟化器等。这些效果是由 Audio Effects 框架处理的,它提供了一组 API,使应用程序可以轻松地使用这些效果。 5. Media Playback Android 的音频架构还包括用于媒体播放的特定库,如 OpenSL ES 和 MediaCodec。OpenSL ES 是一个跨平台的音频 API,它允许开发人员控制音频输入和输出。MediaCodec 则提供了一种高效的方式来解码和编码音频数据。 总之,Android 的音频设计架构非常复杂,但它提供了强大的音频功能和灵活的配置选项,使开发人员可以轻松地创建高质量的音频应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值