网站更新

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

2017 年 8 月

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

架构

Treble

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

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

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

内核加固

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

在内核级优化 SquashFS

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

ART 和 Dalvik

模糊测试

Android 开放源代码项目 (AOSP) 提供了用于测试 Android 运行时 (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 版本中包含对相机服务的以下主要增强:共享表面、多个表面可共用相同的 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,以简化和统一应用的叠加显示方式。Android 开放源代码项目 (AOSP) 中包含使用该功能所需的所有内容。

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

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

  • 当前提醒窗口类型为:TYPE_PHONETYPE_PRIORITY_PHONETYPE_SYSTEM_ALERTTYPE_SYSTEM_OVERLAYTYPE_SYSTEM_ERROR
  • 目标为 O 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.hal 和 IComposerClient.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 降低车载环境中 eMMC 发生故障的风险。如需更多信息,请参阅 Android Automotive 中的闪存磨损管理

优化启动时间

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

任务快照

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

外围设备

默认打印服务

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

Android 8.0 在 platform/packages/services/BuiltInPrintService/ 中纳入了一项默认打印服务,该服务可让用户在现代打印机上进行打印,而无需安装任何额外的应用。此实现支持符合以下条件的打印机:使用 Internet Printing Protocol (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 生态系统建立联系,以及获得使用操作系统方面的帮助。