网站更新

本页介绍了我们对 source.android.com 进行的重大修订。要查看我们对本网站所做更改的完整列表,请参阅 Android 开源项目 (AOSP) docs/source.android.com 日志

2018 年 8 月

欢迎访问修订后的 Android 开源项目 (AOSP) 网站。随着我们网站发展规模越来越大,我们重新改善了平台文档导航功能,以便更好地配合新信息和更新信息使用。

有关重大更改的指南,请参阅以下各小节。有关功能摘要、更新和新增内容,请查看版本说明。您可以通过在 g.co/androidsourceissue 中归档的错误,或通过点击该网站上每个网页页脚中的网站反馈链接,向我们发送您的反馈。

另一个横向菜单

影响最广泛的更改是在网站导航内的标签页中引入了另一个横向菜单,以便更好地显示更深层的网页。现在,每个子标签都包含少量与子标签中标识的关联主题直接相关的部分和网页,这样,用户就不用在包含数十个条目的左侧导航菜单中进行选择。

请注意,我们尚未更新现有文档的目录路径和网址,以避免破坏书签和外部链接等。我们会及时做出这些更改并相应地进行重定向。因此,当您发现更改时,请重新访问该网站以获取新位置并更新书签。

“设置”(Setup) 更名为“设置”(Set up)

主“设置”(Setup) 标签略微做了一些改动(更名为设置 (Set up)),以便与用于后续主要标签的动词保持一致。 下载编译内容已拆分为不同的子标签,以便于访问其中包含的页面。“开发”子部分已重命名为创建子标签,以避免与新的同名顶级开发标签混淆。

之前在“兼容性”>“与我们联系”页面上提供的信息现已合并到设置 > 通讯录(社区)主列表中。

“兼容性”更名为“设计”

以前在“兼容性”顶级标签上提供的信息现位于设计下。要大致了解该计划以及指向新的 Android 兼容性定义文档 (CDD) 的链接,请参阅兼容性子标签。

在相关更改中,Android 兼容性测试套件 (CTS) 的说明和常规调试信息已移至新的测试子标签。显示设置菜单指南已转移到专用子标签。

“移植”更名为“开发”

“移植”标签已更名为开发,以更好地传达此标签包含的说明。本文档主要侧重于实现各个接口,可帮助您编写将设备连接到 Android 操作系统所需的驱动程序。

因此,描述总体 HIDL 格式的架构部分已移至设计标签,以便在开发周期早期的规划阶段予以考虑。引导加载程序内容现在位于设计 > 架构下,同时引入了互动子标签以包含输入、传感器和相关信息。

连接部分已经过重新整理,包含蓝牙和 NFC通话和短信运营商WLAN 子部分。此外,WLAN 部分还包含以下新文章:

“微调”更名为“配置”

“微调”标签已更名为配置,以封装多个自定义和优化步骤。现在,您可以在企业下找到以前的“设备管理”子部分。“ART 和 Dalvik”内容位于 ART 下方,“无线下载 (OTA) 更新”信息位于更新下方。

2017 年 12 月

Android 8.1 已发布!要了解此版本中引入的主要平台功能,请参阅以下条目。

AAudio 和 MMAP

AAudio 是一种具有增强功能的音频 API,可在与支持 MMAP 的 HAL 和驱动程序结合使用时缩短延迟时间。请参阅 AAudio 和 MMAP 文档,了解需要进行哪些硬件抽象层 (HAL) 及驱动程序方面的更改,才能在 Android 中支持 AAudio 的 MMAP 功能。

ART 配置更改

在 Android 8.1 中,我们从 Android Runtime (ART) 中移除了 WITH_DEXPREOPT_BOOT_IMG_ONLY Makefile 选项,并将其替换为 WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY 选项(该选项可以预先优化系统服务器 JAR 以及启动相关的类路径)。有关弃用通知,请参阅配置 ART

生物识别解锁模式安全性衡量方式

Android 8.1 引入了以下两项与生物识别解锁相关的新指标,旨在帮助设备制造商更准确地评估设备安全性:冒名接受率 (IAR) 和欺骗接受率 (SAR)。要了解示例攻击和测试方法,请参阅衡量生物识别解锁模式的安全性

启动时间优化

从 Android 8.1 开始,您可以停用 UFS 和 CPU 调节器等组件的节电设置,以便缩短设备启动时间。请参阅优化启动时间,以了解新的 init.*.rc 设置。

颜色管理

Android 8.1 新增了对颜色管理功能的支持,此功能可用于在采用不同显示技术的设备间提供一致的体验。在 Android 8.1 上运行的应用可以获得广色域显示屏的所有功能,以便充分利用显示设备。有关如何实现、自定义及测试此功能的说明,请参阅颜色管理

OpenGLRenderer 配置简化

在 Android 8.1 及更高版本中,只有 ro.zygote.disable_gl_preload property 仍适用于 OpenGLRenderer 配置。所有其他属性均已移除。要了解相关通知及之前支持的属性,请参阅 OpenGLRenderer 配置

零售演示模式得到简化

通过设备政策管理器,Android 8.1 支持借助演示类型用户角色在零售店展示设备功能。有关实现说明,请参阅零售演示模式

TEXTCLASSIFIER

Android 8.1 引入了 TextClassfier API,该 API 使用机器学习技术来协助开发者对文本进行分类。有关实现说明,请参阅 TEXTCLASSIFIER

时区规则

Android 8.1 为 OEM 提供了一种新机制:无需进行系统更新就可以将更新的时区规则数据推送到设备中。借助此机制,用户能够及时获得更新,OEM 也能够独立于系统映像更新来测试时区更新。有关如何应用这些更新的说明,请参阅时区规则

WLAN 感知

Android 8.1 中的 WLAN 感知功能支持多个设备直接通过 WLAN 进行互连(无需连接到互联网或移动网络)。此功能支持在断开网络的情况下,在可信设备和应用之间轻松共享高吞吐量数据。有关示例、源文件及指向其他文档的链接,请参阅 WLAN 感知

2017 年 11 月

“源代码”部分已更名为设置。我们设置了重定向,以确保旧网址仍可正常运行。

2017 年 9 月

本网站已在中国发布,网址为:source.android.google.cn。此外,所有非参考资料也都已翻译为简体中文,方便用户使用。

2017 年 8 月

Android 8.0 已发布!本部分介绍了 Android 8.0 平台中的主要新功能。

架构

Treble

Android 8.0 支持 Treble,这是 Android 操作系统框架在架构方面的一项重大改变,旨在让制造商以更低的成本更轻松、更快速地将设备更新到新版 Android 系统。文档中详细介绍了 HAL 接口定义语言 (HIDL)、全新的 ConfigStore HAL设备树叠加层供应商原生开发套件 (VNDK)供应商接口对象 (VINTF)模块化内核要求以及供应商测试套件 (VTS) 和基础架构

FunctionFS 支持

FunctionFS (FFS) 是一个通过用户空间进行设计和控制的 USB gadget 函数。提供对该函数的支持后,所有特定于函数和协议的代码都将存在于用户空间中,而所有 USB 传输代码则存在于内核中。使用 FFS 可将媒体传输协议 (MTP) 实现移至用户空间。

在框架方面,大部分主要变化都发生在 MtpServer 中。USB 驱动程序接口已被重构为两个不同的类:一个类使用旧的内核驱动程序,另一个类使用 FFS。然后,MtpServer 可以使用该驱动程序接口,而无需了解实现的细节。服务器启动时,FFS 驱动程序会将 USB 描述符写入文件;然后,它会将数据写入端点文件(类似于内核驱动程序使用方式)。

用于 LLDB/C++ 调试的内核增强功能

Android 8.0 版本包含一些内核增强功能,这些功能可改善开发者的调试体验,有助于开发者开发出更好的应用。如需更多信息,请参阅实现用于 LLDB/C++ 调试的内核增强功能

内核加固

已将内核加固功能和工具放入上游,以便发现内核驱动程序中的错误。如需更多信息,请参阅内核加固

在内核级别优化 SquashFS

SquashFS 是一个面向 Linux 且经过压缩的只读文件系统,适合在系统分区上使用。该文档中描述的优化功能有助于提高 SquashFS 的性能。如需更多信息,请参阅在内核级别优化 SquashFS

ART 和 Dalvik

模糊测试

AOSP 提供了用于测试 Android Runtime (ART) 基础架构的全新模糊测试套件。全新的工具包 JFuzz 以及经过改进的 DexFuzz 现在可以直接在 AOSP 中获得,并且随附了相关文档。请参阅:https://android.googlesource.com/platform/art/+/master/tools/jfuzz/README.md https://android.googlesource.com/platform/art/+/master/tools/dexfuzz/README

无需执行任何操作,即可实现或使用这些新工具。必要时您可以对这些工具进行更改,就像您可以更改运行时/编译器一样。

VDEX 文件:提升系统更新性能

VDEX 文件有助于提升软件更新的性能和用户体验。VDEX 文件会存储包含验证程序依赖项且经过预验证的 DEX 文件,以便 ART 在系统更新期间无需再次解压和验证 DEX 文件。无需执行任何操作,即可实现该功能。该功能默认处于启用状态。要停用该功能,请将 ART_ENABLE_VDEX 环境变量设为 false

ART 性能改进

在 Android 8.0 版本中,Android Runtime (ART) 有了极大改进。该文档总结了设备制造商可以在 ART 中获得的增强功能。如需更多信息,请参阅提升 Android 8.0 中的 ART 性能

Android A/B OTA 更新

该更新解答了设备制造商经常遇到的 Android A/B(无缝)系统更新问题。如需更多信息,请参阅 A/B 更新常见问题解答

车载

蓝牙连接管理

Android 8.0 在车载信息娱乐系统中提供了蓝牙连接管理功能,可实现更顺畅的蓝牙用户体验。如需更多信息,请参阅蓝牙连接管理

蓝牙多设备 HFP

借助蓝牙多设备连接功能,用户可以将多台设备连接到 Android Automotive IVI 蓝牙中的电话配置文件。如需更多信息,请参阅 IVI 连接

车载相机 HAL

介绍了外景系统 (EVS) 堆栈的设计,并提供了可获取和呈现车载相机数据的 HAL 规范。如需更多信息,请参阅外景系统 (EVS) 车载相机 HAL

蓝牙

请参阅更新后的蓝牙概览

验证和调试蓝牙

有关如何验证和调试原生蓝牙堆栈的详细信息,请参阅验证和调试

蓝牙服务

蓝牙提供了多种协助实现跨设备核心服务的功能,如音频流式传输、接打电话和收发短信。如需关于 Android 蓝牙服务的更多信息,请参阅蓝牙服务

BLE 广播

蓝牙 5 支持不同的蓝牙低功耗数据广播模式,包括更高的带宽或更大的范围。如需更多信息,请参阅蓝牙低功耗广播

音频编解码器的蓝牙支持

Android 8.0 版本支持蓝牙高清音频编解码器。如需更多信息,请参阅高级音频编解码器

相机

主要相机功能

Android 8.0 版本中包含对相机服务的以下主要增强功能:共享 surface、多个 surface 可共用相同的 OutputConfiguration System API 以实现自定义相机模式,以及 onCaptureQueueEmpty。如需更多信息,请参阅相机版本支持

配置

Ambient 权能

借助此类权能,Linux 进程可以舍弃大多数类似于 root 的权限,同时保留执行其功能所需的权限。Ambient 权能允许系统服务在其 .rc 文件中配置各项权能,从而将所有配置放入单个文件中。如需更多信息,请参阅实现 Ambient 权能

特许权限白名单要求

从 Android 8.0 开始,必须将所有特权应用显式加入到 /etc/permissions 目录下的系统配置 XML 文件的白名单中。如果不这样做,虽然设备可以启动,但设备实现将无法通过 CTS。如需更多信息,请参阅特许权限白名单要求

实现 USB HAL

Android 8.0 版本将 USB 命令的处理从 init 脚本移至了原生 USB 守护进程,以实现更好的配置和代码可靠性。如需更多信息,请参阅实现 USB HAL

网络连接

为流量已用完的用户自定义设备行为

流量已用完的 Android 设备允许网络流量通过,但需要运营商和电信服务商来实现缓解协议。该功能实现了一个通用解决方案,使运营商和电信服务商能够在设备用完流量时发出提示。如需更多信息,请参阅为流量已用完的用户自定义设备行为

调试

在 Android 编译系统中启用排错程序

排错程序是基于编译器的工具组件,在开发和测试期间使用,旨在发现错误和改进 Android。Android 目前的一系列排错程序可以发现和诊断内存滥用错误以及可能存在危险的未定义行为。如需更多信息,请参阅在 Android 编译系统中启用排错程序

恢复陷入重新启动循环的设备

Android 8.0 中包含一项能够在发现核心系统组件陷入崩溃循环时派出“救援队”(Rescure Party) 的功能。然后,Rescue Party 会采取一系列措施来上报相关情况,以恢复设备。如需更多信息,请参阅 Rescue Party

Storaged

Android 8.0 添加了对 storaged(一个 Android 本机守护进程,可在 Android 设备上收集和发布存储指标)的支持。如需更多信息,请参阅实现 Storaged

显示

针对悬浮窗口的 Air Traffic Control

Android 8.0 引入了针对悬浮窗口的 Air Traffic Control,以简化和统一应用的叠加显示方式。AOSP 中包含使用该功能所需的所有内容。

借助 Air Traffic Control,开发者可以为应用创建全新的(受管理)悬浮层/窗口类型,以用于在其他应用之前显示窗口。该功能会为所有使用悬浮层的应用显示持续性通知,以便用户管理此类提醒窗口。

Android 兼容性测试套件 (CTS) 可以确认:

  • 当前提醒窗口类型为:TYPE_PHONETYPE_PRIORITY_PHONETYPE_SYSTEM_ALERTTYPE_SYSTEM_OVERLAYTYPE_SYSTEM_ERROR
  • 目标为 Android 8.0 SDK 的应用无法使用上述窗口类型在其他应用之前显示窗口。它们需要使用新窗口类型 TYPE_APPLICATION_OVERLAY
  • 目标为较低版本 SDK 的应用仍然可以使用目前的窗口类型;不过,这些窗口在 Z 轴上将排在新的 TYPE_APPLICATION_OVERLAY 窗口之后。
  • 系统可以在新层中移动或调整窗口大小,以减少杂乱现象。
  • 设备制造商必须保留通知,以便用户控制哪个应用显示在其他应用之前。

在辅助显示屏上启动 Activity

所有人都可以使用虚拟显示屏,无需任何特殊硬件。任何应用都可以创建虚拟显示屏实例;在 Android 8.0 版本中,如果关联的功能已启用,则可以在相应虚拟显示屏上启动 Activity。

要支持多显示屏功能,您应使用现有受支持的辅助设备连接方式之一,或编译新硬件。在 Nexus 和 Pixel 设备上连接显示屏的受支持的方式包括 Google Cast 和应用内虚拟显示屏。是否支持其他方式取决于每种具体情况下(如 MHL 或 DisplayPort over USB-C)的内核驱动程序支持,以及完全实现 HardwareComposer HAL(IComposerCallback.halIComposerClient.hal)中与显示屏相关的接口定义。

每种方式都可能需要 SoC 或 OEM 支持。例如,要启用 DisplayPort over USB-C,则同时需要硬件 (SOC) 和软件(驱动程序)支持。您可能需要为硬件实现驱动程序,才能支持连接外接显示器。

默认实现将允许在辅助显示屏上启动各项 Activity 的全屏堆叠。您可以自定义辅助显示屏上的堆叠、系统界面和行为。

对通用提示的支持

Android 8.0 允许开发者为按钮及其他图标上的鼠标悬停行为提供描述性操作名称及其他实用信息。设备制造商可以设计弹出式提示的样式。其布局在 android/frameworks/base/core/res/res/layout/tooltip.xml 中定义。

OEM 可以替换该布局或更改其尺寸和样式参数。请仅使用文字,并使尺寸在合理的范围内尽可能小。该功能完全在 View 类中实现,且有一些相当详尽的 CTS 测试可用于检查提示行为的很多方面。

对扩展宽高比的支持

Android 8.0 包含一个新的清单属性 maxAspectRatio,该属性可让 Activity 或应用指定其支持的最大宽高比。maxAspectRatio 将之前的元数据标记替换成一个顶级 API,并让设备可支持大于 16:9 的宽高比。

  • 如果 Activity 或应用的大小可调整,则允许 Activity 填充屏幕。
  • 如果 Activity 或应用的大小不可调整,或者平台会强制调整 Activity 的大小,则允许应用窗口根据 maxAspectRatio 值,以不超过此值的宽高比显示。
    • 对于在搭载 Android 8.0 的设备上运行的应用,默认值为当前设备的宽高比。
    • 对于在搭载较低版本 Android 的设备上运行的应用,默认值为 16:9。

实现自适应图标

如果开发者仅提供一个图标素材资源,自适应图标的形状在设备内会保持一致,但在设备之间会有所差异。此外,图标支持两个图层(前景和背景),以实现动画效果,为用户提供愉悦的视觉体验。如需更多信息,请参阅实现自适应图标

夜间模式

Android 7.0.1 中引入了夜间模式,该模式允许用户降低其屏幕发出的蓝光量。Android 8.0 使用户可以更好地控制夜间模式的强度。如需更多信息,请参阅实现夜间模式

画中画

Android 8.0 支持在 Android 手持设备上使用画中画 (PIP) 功能。借助画中画功能,用户可以将有正在进行的活动(如视频)的应用调整到一个小窗口中。如需更多信息,请参阅 Android 手机上的画中画

改进分屏交互

多窗口模式使用户设备的屏幕上可以同时显示多个应用。Android 8.0 改进了默认模式(分屏),当用户在进入分屏模式后点按主屏幕时,会压缩顶部窗格并调整启动器的大小。如需更多信息,请参阅改进分屏交互

添加微件/快捷方式

Android 8.0 中的一个新 API 使应用开发者可以从应用内添加快捷方式和微件,而不必依靠微件面板。出于安全考虑,以前通过发送广播添加快捷方式的方法已被弃用。如需更多信息,请参阅实现添加微件/快捷方式

下载和编译

Android LLVM 工具链改进

希望使用我们的最新工具链/工具的 OEM 必须确保其私有代码可以通过更新后的工具链成功编译。这可能需要他们修复其代码中存在的与未定义行为相关的问题。(当然,他们也可以随意使用喜欢的任何工具来编译自己的代码。)

他们必须确保自己的代码不含未定义的行为(通过使用 UBSan 等工具),以使之不易受到新工具链带来的问题的影响。所有工具链都始终在 AOSP 中直接更新。远远在 OC 发布之前,所有功能便都已可用,因此 OEM 应已遵循相关规定。

如需常规说明,请参阅公开的 Clang/LLVM 文档;如需 Android 专属指南,请参阅 AOSP 中的 Android Clang/LLVM 文档集。最后,请加入 android-llvm 公开论坛,以获取帮助和参与开发。

DRM/KMS

Linux 内核版本 4.9 中的 DRM/KMS

Android 使用的 Direct Rendering Manager (DRM)/Kernel Mode Setting (KMS) 框架由 Linux 内核开发者在 Linux 内核中开发和维护。Android 从 Linux 内核向下合并。如果从我们的通用内核向下合并,设备制造商可以自动获得 DRM/KMS 框架。

DRM/KMS 在 Linux 内核版本 4.9 中开始可用,Android 强烈建议 OEM 合作伙伴从这个内核版本开始使用 DRM/KMS。 4.9 及更高版本的通用 Android 内核将不再支持 Atomic Display Framework (ADF)(Android 目前官方支持的显示框架);从 4.9 版开始,Android 将支持 DRM/KMS。OEM 可以继续使用 ADF(或任何其他框架),但 Android 在通用 Android 内核中将不再为其提供支持。

要实现 DRM/KMS,除了从 Android 通用内核向下合并 DRM/KMS 框架之外,您还需要使用 DRM/KMS 编写自己的驱动程序。

密钥存储区

Keymaster 3

Android 8.0 更新了 Keymaster(密钥存储区 HAL):扩展了 Android 设备上硬件支持的密钥存储区的功能。这基于 Android 7.1.2 对 Keymaster 2 的更新。如需更多信息,请参阅 Keymaster 3 文档

安全增强功能

从 HttpsURLConnection 中移除了不安全的 TLS 版本回退功能

对于某些服务器中有问题的 TLS 协议降级协商实现,不安全的 TLS/SSL 协议版本回退功能是一种解决方法。这种方法容易受到 POODLE 攻击。Chrome 45 在 2015 年 9 月弃用不安全的回退功能时,依赖它的服务器不到 0.01%。为了提高安全性,在 Android 8.0 中,我们从 HttpsURLConnection 中移除了不安全的 TLS 版本回退功能。如需更多信息,请参阅这篇博文

要在搭载 Android 8.0 的设备上测试该功能,请运行以下 CTS 测试用例:

cts-tradefed run cts -m CtsLibcoreOkHttpTestCases

性能

闪存磨损管理

介绍 eMMC 行为和新功能,以协助 OEM 降低 Automotive 环境中 eMMC 发生故障的风险。如需更多信息,请参阅 Android Automotive 中的闪存磨损管理

优化启动时间

有关缩短特定 Android 设备启动时间的指南。如需更多信息,请参阅优化启动时间

任务快照

任务快照是在 Android 8.0 中引入的基础架构,可将窗口管理器中的最近任务缩略图和已保存 Surface 这两者的屏幕截图进行合并,从而节省内存。如需更多信息,请参阅任务快照

外设

默认打印服务

打印服务是一款应用,可用于发现打印机并将其呈现给设备的打印框架。在较低的 Android 版本中,用户必须搜索并安装第三方打印服务才能进行打印。

Android 8.0 在 platform/packages/services/BuiltInPrintService/ 中纳入了一项默认打印服务,该服务可让用户在现代打印机上进行打印,而无需安装额外的应用。此实现支持符合以下条件的打印机:使用互联网打印协议 (IPP) 进行通信,并使用 PCLm、PWG-Raster 或 PDF 发送可打印的内容。对于较旧的打印机,用户应安装 PrintRecommendationService 推荐的应用(如此 I/O 演示中所示)。

参考资料更新

顶级导航菜单中添加了参考资料部分。它属于 Treble 版本的一部分,其中添加了 HIDL 参考资料部分。Trade Federation旧版 HAL 参考文档已更新。

“设置”菜单

设置:模式和组件

在 Android 8.0 中,“设置”菜单中增加了一些能够涵盖常见使用情况的组件和微件。如需更多信息,请参阅模式和组件

设置:已更新的信息架构

Android 8.0 为“设置”应用引入了全新的信息架构。新信息架构的目标是简化设置的组织方式,让用户能够更轻松地快速查找自定义 Android 设备所需的设置。如需更多信息,请参阅如何实现已更新的信息架构

个性化设置

Android“设置”应用可为用户提供一系列建议。该功能会根据所有相关信息或用户以往与建议的互动情况对建议进行排名。如需更多信息,请参阅个性化设置

实现设置:通用搜索

Android 8.0 为“设置”菜单添加了经过扩展的搜索功能。该文档介绍了如何添加设置,以及如何确保正确地将其加入“设置”索引。如需更多信息,请参阅通用搜索

存储

更快地获取存储统计信息

Android 8.0 利用 EXT4 文件系统的“配额”支持,近乎即时地提供磁盘使用情况统计信息。如需更多信息,请参阅如何实现更快地获取存储统计信息

2017 年 4 月

欢迎访问新版 source.android.com!本网站经过了全新改版,可让您更轻松地浏览、搜索和阅读日益增多的信息。以下是我们对本网站所做改进的摘要:

屏幕空间更宽裕,字体更大

整个网站的空间更宽裕,可让您同时查看更多内容。代码示例和命令更加醒目,并且所有文字均采用更大的字体。

适合移动设备的视图

通过专门的移动视图,新版网站可以在手持设备上更明晰地呈现内容。

新移动视图
图 1 网站的新移动视图

新的顶级标签

之前的“设备”标签已更名为移植,同时之前的“核心技术”子标签已更名为微调并移到了网站顶部,以便更好地显示给用户。

“安全性”标签排在了前列

随着人们越来越关注 Android 的安全性,我们将安全性标签向前移到了源代码旁边,以体现其重要性。

更好的参考资料

您可以直接从顶层的参考资料标签获得硬件抽象层Trade Federation 参考资料。

只需点击每个页面右上角的转到源代码按钮,即可访问 AOSP 代码库

包罗广泛的页脚

除了已有的“关于”、“社区”和“法律”页脚之外,现在您还可以在每个页面的底部找到完整的链接列表。通过这些链接,您可以编译 Android、与 Android 生态系统建立联系,以及获得使用 Android 操作系统方面的帮助。