Android 平台术语表

如需了解 Android 开源项目 (AOSP) 的基本术语,请参阅以下列表。以下是关键术语定义的其他来源:

请参阅以尊重的态度编码,查找相关示例,了解您可以使用以及应该避免使用哪些术语,从而打造更具包容性的生态系统。

应用

.apk 文件
Android 应用软件包文件。每个 Android 应用都会经过编译并打包在一个文件中,其中包含该应用的所有代码(.dex 文件)、资源、资产和清单文件。应用软件包文件可以是任何名称,但必须使用 .apk 扩展名。例如:myExampleAppname.apk。为方便起见,通常将应用软件包文件称为“.apk”。

相关术语:应用

操作
intent 发送端希望完成的事项的说明。操作是指定给 intent 的字符串值。操作字符串可由 Android 或第三方开发者定义。例如,android.intent.action.VIEW 用于打开网址,com.example.rumbler.SHAKE_PHONE 用于让自定义应用触发手机振动。

相关术语:intent

activity
应用中的单个屏幕,包含提供支持的 Java 代码,派生自 Activity 类。activity 往往用醒目的全屏窗口表示,该窗口可接收和处理界面事件并执行复杂任务,这取决于用来呈现其窗口的“窗口”对象。虽然 activity 通常为全屏窗口,但也可以是浮动或透明窗口。
应用
从组件的角度来说,Android 应用由一个或多个 activity、服务、监听器和 intent 接收端组成。从源文件的角度来说,Android 应用由代码、资源、资产和一个清单组成。在编译过程中,这些文件会被打包到一个称为应用软件包文件 (.apk) 的文件中。

相关术语:.apkactivity

广播接收器
一个应用类,专门监听广播的 intent,而不监听发送到单个目标应用/activity 的 intent。系统会将广播 intent 发送给所有感兴趣的广播接收器,再由这些接收器依序处理该 intent。

相关术语:intentintent 过滤器

内容提供器
一个数据抽象层,您可以用它来安全地向其他应用公开您的应用的数据。content provider 基于 ContentProvider 类构建,该类会处理特定格式的内容查询字符串,以返回特定格式的数据。如需了解详情,请参阅内容提供器主题。

相关术语:URI 在 Android 中的使用

对话框
一种浮动窗口,可以起到轻型表单的作用。对话框只能包含按钮控件,旨在执行简单的操作(例如按钮选择)并且可能会返回值。对话框不应保留在历史记录堆栈中,不应包含复杂的布局,也不应执行复杂的操作。Android 为您提供了一个包含可选按钮的简单默认对话框,但您也可以定义自己的对话框布局。对话框的基类为 Dialog

相关术语:activity

intent
一种消息对象,可用于异步启动其他应用/activity 或与它们进行通信。intent 对象是 Intent 的实例。它包含几个您可提供值的条件字段,用于确定接收 intent 的应用/activity 以及接收端在处理 intent 时执行的操作。可用的条件包括所需的操作、类别、数据字符串,数据的 MIME 类型、负责处理操作的类等。应用会将 intent 发送给 Android 系统,而不是直接发送给其他应用/activity。应用可以将 intent 发送给单个目标应用,也可以将其作为广播发送,再由多个应用依序处理。Android 系统负责根据 intent 中提供的条件和其他应用定义的 intent 过滤器,为每个 intent 解析最佳的接收端。如需了解详情,请参阅 intent 和 intent 过滤器

相关术语:intent 过滤器广播接收器

intent 过滤器
应用在清单文件中声明的过滤器对象,用于告知系统它的每个组件愿意接受的 intent 类型以及相应的条件。通过 intent 过滤器,应用可以表达对特定数据类型、intent 操作、URI 格式等的兴趣。解析 intent 时,系统会评估所有应用中提供的所有 intent 过滤器,再将此 intent 传递给与该 intent 和条件最相符的应用/activity。如需了解详情,请参阅 intent 和 intent 过滤器

相关术语:intent广播接收器

资源
非编程的应用组件,位于经过编译的应用代码之外,但可以使用大家熟知的参考格式从应用代码加载。Android 支持多种资源类型,但典型应用的资源包括界面字符串、界面布局组件、图片或其他媒体文件等。应用利用资源来高效地支持本地化以及各种设备配置文件和状态。例如,应用会为所支持的每个本地化版本或设备类型包含一组独立的资源,也可以包含特定于当前屏幕方向(横屏或竖屏)的布局资源。如需详细了解资源,请参阅资源和资产。应用的资源始终存储在项目的 res/* 子文件夹中。
服务
Service 类的对象,在后台运行(没有任何界面存在)来执行各种持久操作,例如播放音乐或监控网络活动。

相关术语:activity

Android 中的 URI
Android 使用 URI(统一资源标识符)字符串作为基础来请求 content provider 中的数据(例如检索通讯录)以及 intent 中的操作(例如在浏览器中打开网页)。URI 架构和格式专用于特定的使用类型,应用可以按照所需的任意方式处理特定 URI 架构和字符串。某些 URI 架构被系统组件保留。例如,从内容提供器请求数据必须使用 content://。在 intent 中,使用 http:// 架构的 URI 将由浏览器处理。

build

adb
Android 调试桥,SDK 中包含的一个命令行调试应用。它提供了浏览设备、在设备上复制工具和转发调试端口的工具。如果您在 Android Studio 中进行开发,那么 adb 会集成到您的开发环境中。如需了解详情,请参阅 Android 调试桥
Android 项目
Android Gerrit 主机上的 Git 代码库。如需了解详情,请参阅源代码控制工具 > Gerrit
build 指纹
build 指纹是能让人看懂的唯一字符串,其中包含向每个 build 发出的制造商信息。如需了解详情,请参阅了解 build 指纹
Git
Android 使用的源代码控制工具(过去在单个 Git 代码库中操作)。此工具可与 Repo 结合使用,用于处理多个 Git 代码库。如需了解详情,请参阅源代码控制工具 > Git
Git 分支 - 规范
每个 Git 代码库的不同版本,例如 android-11.0.0_r1(位于 cs.android.com/android/platform/superproject/+/android-11.0.0_r1)。 如需了解详情,请参阅 Git 分支 - Nutshell 中的分支
Git 分支 - 本地
当前 Repo 客户端中用于更改代码的临时分支,此分支以 repo start branch-name . 命令开头,是一条有效的开发线路。分支上的最近一次提交称为相应分支的顶端。
Git 代码库
有时称为项目,是代码库 (codebase) 的一部分,表示特定的组件或设备类型,例如 frameworks/baseplatform/packages/apps/Car/Media
清单文件
一个 XML 文件,用于说明每个分支的 Git 代码库分组情况、用于检出这些代码库的 Git 修订版本以及代码库在文件系统中的布局。此 XML 文件通常名为 default.xml,与某个 Repo 分支相关联,描述了您初始化并同步该 Repo 分支时检出的 Git 代码库和 Git 分支。此文件定义了各种 Git 代码库,Repo 工具会将此类代码库提取到 Repo 客户端检出内容中,以便构建产品(例如 Android Automotive OS)。如需查看所有清单,请访问 android.googlesource.com/platform/manifest/+refs。如需查看 AndroidManifest 文件中包含的用于提取 Android 平台 (AOSP) 文件的默认清单,请访问 android.googlesource.com/platform/manifest/+/refs/heads/master/default.xml。请参阅 AndroidManifest.xml 文件了解应用信息,参阅 Repo 清单格式了解平台开发信息。
无线下载 (OTA) 更新
正常使用的 Android 设备可以接收和安装系统、应用软件和时区规则的无线下载 (OTA) 更新。如需了解详情,请参阅 OTA 更新
Repo
一种 Git 封装容器,可让系统更轻松地对多个 Git 代码库执行操作。它会将多个 Git 代码库作为单个检出或代码库进行汇总和管理。如需了解详情,请参阅源代码控制工具 > Repo
Repo 分支
AndroidManifest 文件中列出的一系列 Git 代码库,代表 Android 代码库的某个版本 (build),例如通过 repo init 命令和 repo sync 命令下载的 android11-gsiaosp-android-games-sdk。如需获取所有清单文件的链接,请参阅清单文件说明;如需搜索其 build,请访问 https://cs.android.com/。
升级
一般而言,升级会将较大项目的组成子项目更新为较新版本。升级会将修订版本级别更改为下一个递增版本或最新的可用版本。对于 HIDL 软件包,为了保持软件包级的向后兼容可扩展性,次要版本升级会将新软件包更新为更高的次要版本,同时保持名称和主要版本与旧软件包相同。 如果是引导加载程序配置,则升级会将启动头文件版本支持更新到最新版本。

图形

画布
用于对照 Bitmap 或 Surface 对象来处理实际位合成的一种绘图表面。它包含关于位图、线条、圆形、矩形、文字等的标准计算机绘制方法,并与 Bitmap 或 Surface 相关联。画布是在屏幕上绘制 2D 对象的最简便方法。基类为 Canvas

相关术语:可绘制对象OpenGL ESSurface

可绘制对象
一种经过编译的视觉资源,可用作背景、标题或屏幕的其他部分。可绘制对象通常会被加载到另一个界面元素中,例如作为背景图片。可绘制对象不能接收事件,但可以指定各种其他属性(如“状态”和调度),以启用动画对象或图像库等子类。许多可绘制对象都是加载自可绘制资源文件(即描述图像的 xml 或位图文件)。可绘制资源会被编译成 android.graphics.drawable 的子类。如需详细了解可绘制对象和其他资源,请参阅资源

相关术语:资源画布

布局资源
描述 activity 屏幕布局的 XML 文件。

相关术语:资源

九宫格图片
可调整大小的位图资源,可用作设备上的背景或其他图片。如需了解详情,请参阅九宫格可拉伸图片

相关术语:资源

OpenGL ES
Android 提供 OpenGL ES 库,该库可用于实现硬件加速的 3D 渲染。对于 2D 渲染,画布是更简单的选项。为方便使用,Android 原生开发套件 (NDK) 中提供了 OpenGL ES。android.opengljavax.microedition.khronos.opengles 软件包提供 OpenGL ES 功能。

相关术语:画布Surface

Surface
类型为 Surface 的对象,表示要合成到屏幕上的内存块。Surface 包含用于绘图的 Canvas 对象,并提供各种辅助方法来绘制图层和调整界面大小。您不应直接使用该类,而应使用 SurfaceView

相关术语:画布

SurfaceView
一个 View 对象,该对象封装 Surface 用于绘制,并提供相应的方法来动态指定其大小和格式。SurfaceView 针对资源密集型操作(例如游戏或相机预览)提供了一种独立于界面线程进行绘制的方式,但也会因此占用额外的内存。SurfaceView 同时支持 Canvas 和 OpenGL ES 图形。基类为 SurfaceView

相关术语:Surface

主题
一组绑定在一起、用于定义各种默认显示设置的属性,比如文字大小、背景颜色等。Android 提供了一些标准的主题,列于 R.style 中(以“Theme_”开头)。
视图
在屏幕上绘制为矩形区域并用于处理点击、按键和其他互动事件的对象。视图是 activity 或对话框屏幕(文本框、窗口等)的大多数布局组件的基类。它接收来自父对象(请参阅 ViewGroup)的调用来绘制自身,并通知父对象它自身的显示位置和大小(父级不一定会遵从)。如需了解详情,请参阅 View

相关术语:视图层次结构ViewGroup微件

视图层次结构
View(视图)和 ViewGroup(视图组)对象的排列方式,定义了应用中每个组件的界面。层次结构由视图组构成,而视图组中又可包含一个或多个子视图或视图组。在进行调试和优化时,您可以通过 Android SDK 提供的 Hierarchy Viewer 获得视图层次结构的可视化表示。

相关术语:视图ViewGroup

ViewGroup
对一组子视图进行分组的容器对象。视图组负责确定子视图的位置和大小,以及在适当的时候调用每个子视图来绘制自身。某些视图组是不可见的,仅用于布局,而有些视图组则具有固有的界面(例如,滚动列表框)。视图组均位于 widget 包中,但扩展了 ViewGroup

相关术语:视图视图层次结构

微件
一组完全实现的 View 子类,这些子类用于呈现表单元素和其他界面组件,例如文本框或弹出式菜单。由于微件是完全实现的,因此它会自行处理测量和绘制,并且会响应屏幕事件。微件均在 android.widget 软件包中。
窗口
在 Android 应用中,窗口是指派生自抽象类 Window 的对象,该类指定常规窗口的元素,例如外观和风格(标题栏文本、菜单的位置和内容等等)。对话框和 activity 使用该类的实现来呈现窗口。您无需在应用中实现此类或使用窗口。

平台

Android Runtime (ART) 和 Dalvik
Android Runtime (ART) 是 Android 上的应用和部分系统服务使用的托管式运行时。Android Runtime (ART) 是搭载 Android 5.0(API 级别 21)及更高版本的设备的默认运行时。ART 及其前身 Dalvik 最初是专为 Android 开源项目打造的。作为运行时的 ART 会执行 Dalvik 可执行文件并遵循 Dex 字节码规范。ART 和 Dalvik 兼容运行 Dex 字节码的运行时,因此,在使用 ART 运行时,面向 Dalvik 开发的应用应能正常运行。
代码流水线
代码流水线包含软件产品的版本。它由来自一个或多个代码库的一个或多个分支组成,所有分支通常都同时处于积极开发中。代码流水线是版本的聚合点和目标。如需详细了解代码流水线,请参阅 Android 软件管理
.dex 文件
已编译的 Android 应用代码文件。

Android 程序会被编译成 .dex 文件(Dalvik 可执行文件),进而再被压缩成设备上的单个 .apk 文件。用 Java 编程语言编写且已经过编译的应用可以自动转换成 .dex 文件。

测试

工件
工件是与 build 相关的日志,用于启用本地问题排查。在查看变更列表时,您可以直接从 Gerrit 访问这些日志。向下滚动到 Presubmit Status 并点击红色的 build 链接,即可查看或下载关联的 build_error.log 文件。 您也可以通过中央 Android 持续集成服务器来获取这些工件,方法是访问 ci.android.com/,然后点击目标和 build 对应的“下载”(向下箭头)图标。如需详细了解如何查找工件,请参阅 Android 持续集成
CDD
Android 兼容性定义文档 (CDD) 列举了设备必须满足哪些要求才能与最新版 Android 兼容。设备实现必须满足本兼容性定义文档(包括以参考资料的形式纳入的任何文档)中列出的要求,才会被视为与 Android 兼容。如需详细了解 CDD,请参阅 Android 兼容性定义文档
CTS
兼容性测试套件 (CTS) 是一个测试套件,用于确保 API 的正确性并遵循 CDD 中列出的规范。它在 AOSP 中作为源代码提供,并可供下载为二进制文件。如需了解详情,请参阅兼容性测试套件
CTS 验证程序
兼容性测试套件验证程序(CTS 验证程序)是对 CTS 的补充。CTS 验证程序可测试需要手动输入才能在固定设备上测试的 API 和功能(例如音频质量、加速度计等)。如需了解详情,请参阅使用 CTS 验证程序
调试
调试需要在 Android 平台代码(功能或相应测试中)中找到错误并进行修复。如需了解详情,请参阅调试原生 Android 平台代码
GoogleTest (GTest)
GTest 是 Google 的 C++ 测试和模拟框架。GTest 二进制文件通常会访问较低级别的抽象层,或针对各种系统服务执行原始 IPC。因此,Gtest 的测试方法通常与接受测试的服务密切相关。如需获取相关代码,请访问 github.com/google/googletest;如需获取相关文档,请访问 google.github.io/googletest
插桩测试
插桩测试提供了一种通过 am instrument 命令启动的特殊测试执行环境,其中目标应用进程会重启并使用基本的应用上下文进行初始化,并在应用进程虚拟机内启动插桩线程。如需了解详情,请参阅插桩测试
Logcat
Logcat 是一个命令行工具,用于转储系统消息日志,包括设备抛出错误时的堆栈轨迹,以及从您的应用使用 Log 类写入的消息。如需了解详情,请参阅 Logcat 命令行工具
日志记录
由于在 logcat 中合并使用了多个标准,Android 中的日志记录较为复杂。如需详细了解所使用的主要标准,请参阅了解日志记录
合并冲突
如果 Android 构建服务器无法再自动合并同一文件的两个或更多版本,就会发生合并冲突。发生合并冲突时,通常需要手动修改文件以解决所有的更新冲突问题。
提交前和提交后测试
提交前测试用于防止在通用内核中引入故障。目前尚未公开结果。

Android 提交后测试在新的补丁提交到通用内核分支后执行。通过输入 aosp_kernel 作为部分分支名称,您会看到具有结果的内核分支列表。例如,可以在此处找到“android-mainline”的结果。
Tradefed
Trade Federation(简称 Tradefed 或 TF)自动化测试框架是一种连续的测试框架,专门用于在 Android 设备上运行测试。例如,Tradefed 可用于运行 CTS 和 VTS。如需了解详情,请参阅 Trade Federation 概览
VTS
Android 供应商测试套件 (VTS) 提供了大量用于进行 Android 测试的功能,能够促进由测试驱动的开发流程,并自动执行 HAL 和 OS 内核测试。如需了解详情,请参阅供应商测试套件 (VTS) 和基础架构