作者 / 产品管理副总裁、Android 开发者 Matthew McCullough
Android 16 的首个 Beta 版现已推出,这是向开发者和早期体验者开放试用的最好时机。您现在可以注册任何受支持的 Pixel 设备,以便以 OTA 方式获取此版本和未来的 Android Beta 版更新。
此版本包括对未来应用自适应性、实时动态、高级专业视频格式等内容的支持。感谢您一直以来对 Android 平台的支持,使其成为一个适合所有人的平台。
Android 自适应应用
用户希望能够在他们的所有设备上无缝运行应用,而不受屏幕大小和设备形态的影响。为此,Android 16 正在逐步淘汰应用限制用户在大屏设备上调整屏幕方向和大小的功能。这类似于原始设备制造商 (OEM) 在过去几年中为大屏设备添加的功能,让用户能以任何窗口大小和宽高比运行应用。
在宽度大于 600dp 的屏幕上,以 API 级别 36 为目标的应用将采用可调整大小的窗口。您可以检查自己的应用,以确保现有界面能够无缝缩放,在纵向与横向的宽高比下都能流畅运行。我们提供了框架、工具和库来助您一臂之力。
主要变更
在大屏设备上,应用 (而不是游戏) 将弃用限制方向和大小调整的清单属性和 API。
时间表
Android 16 (2025 年):此更改适用于大屏设备 (宽度为 600dp) 上以 API 级别 36 为目标的应用 (开发者可以选择不接受)
将于 2026 年发布的 Android 版本:此更改适用于大屏设备上以 API 级别 37 为目标的应用 (不可选择不接受)
现在正是让您的应用具备自适应能力的绝佳时机!您可以通过启用 UNIVERSAL_RESIZABLE_BY_DEFAULT 标志,在不针对特定目标的情况下使用应用兼容性框架来测试这些覆盖设置。
Live Updates
实时动态 (Live Updates) 是一种全新的通知类型,可帮助用户监控和快速访问正在进行的重要活动。
新的 ProgressStyle 通知模板为实时动态提供了统一的用户体验,从而帮助您构建以进度为中心的用户旅程,包括共享车辆、送货和导航。该模板还支持自定义图标,用于开始、结束和当前进度追踪、分段和点、用户旅程状态、里程碑事件等内容。
建议仅在共享车辆、送货和导航等场景中使用 ProgressStyle 通知。
@Override
protected Notification getNotification() {
return new Notification.Builder(mContext, CHANNEL_ID)
.setSmallIcon(R.drawable.ic_app_icon)
.setContentTitle("Ride requested")
.setContentText("Looking for nearby drivers")
.setStyle(
new Notification.ProgressStyle()
.addProgressSegment(
new Notification.ProgressStyle.Segment(100)
.setColor(COLOR_ORANGE)
).setProgressIndeterminate(true)
).build();
}
相机和媒体更新
Android 16 增强了对播放、创建和编辑高质量媒体内容的支持,这是社交和生产力应用的关键用例。
高级专业视频
Android 16 引入了对高级专业视频 (APV) 编解码器的支持,该编解码器旨在用于专业级高质量视频的录制和后期制作。
🔗 高级专业视频
https://www.ietf.org/archive/id/draft-lim-apv-00.html
APV 编解码器标准具有以下特点:
感知上无损的视频画质 (接近原始视频画质)
低复杂度和高吞吐量的帧内编码 (无像素域预测),以更好地支持编辑工作流程
通过轻量级熵编码方案,支持针对 2K、4K 和 8K 分辨率内容使用高比特率范围 (高达数 Gbps)
帧平铺,适用于沉浸式内容以及实现并行编码和解码
支持各种色度采样格式和位深
支持多次解码和重新编码,且不会严重降低视觉质量
支持多视图视频和辅助视频,如深度、Alpha 和预览
支持 HDR10/10+ 和用户定义的元数据
OpenAPV 项目提供了 APV 的参考实现。Android 16 将实现对 APV 422-10 配置文件的支持,该配置文件提供 YUV 422 颜色采样以及 10 位编码功能,并支持高达 2 Gbps 的目标比特率。
🔗 OpenAPV 项目
https://github.com/openapv/openapv
相机夜间模式场景检测
为了帮助您的应用了解何时切换至或切换出夜间模式相机会话,我们在 Android 16 中添加了 EXTENSION_NIGHT_MODE_INDICATOR。如果设备支持,您可以在 Camera2 内的 CaptureResult 中获取此 API。
垂直文本
Android 16 增加了对垂直渲染和测量文本的底层支持,为库开发者提供了基础的垂直书写支持。这对于像日语这样常用垂直书写系统的语言特别有用。Paint 类中添加了一个新标志 VERTICAL_TEXT_FLAG。使用 Paint.setFlags 设置此标志后,Paint 的文本测量 API 将报告书写方向为垂直方向而不是水平方向,而 Canvas 将垂直绘制文本。
注意:目前的高级文本 API (如 Jetpack Compose 中的 Text、TextView、Layout 类及其子类) 既不支持垂直书写系统,也不支持使用 VERTICAL_TEXT_FLAG。
val text = "「春は、曙。」"
Box(Modifier
.padding(innerPadding)
.background(Color.White)
.fillMaxSize()
.drawWithContent {
drawIntoCanvas { canvas ->
val paint = Paint().apply {
textSize = 64.sp.toPx()
}
// Draw text vertically
paint.flags = paint.flags or VERTICAL_TEXT_FLAG
val height = paint.measureText(text)
canvas.nativeCanvas.drawText(
text, 0, text.length, size.width / 2, (size.height - height) / 2, paint
)
}
})
{}
无障碍功能
我们在 Android 16 中添加了新的无障碍功能 API,旨在帮助您将应用带给每位用户。
补充说明
当无障碍功能服务描述 ViewGroup 时,它会将其子视图的内容标签合并。如果您为 ViewGroup 提供 contentDescription,无障碍功能服务则会假定您也要覆盖不可聚焦的子视图的内容。如果您想为下拉菜单 (如 "字体系列") 添加标签,同时保留无障碍功能的当前选择 (如 "Roboto"),这可能会出现问题。我们在 Android 16 中添加了 setSupplementalDescription,以便您可以提供 ViewGroup 相关信息的文本,而不会覆盖其子视图的信息。
必填表单字段
在 Android 16 中,我们将 setFieldRequired 添加到 AccessibilityNodeInfo,以便应用告知无障碍功能服务需要输入表单字段。这对于填写各种类型表单的用户来说是一个重要的场景,即使是像必须勾选的条款和条件复选框这样简单的操作,也可以帮助用户始终如一地识别和快速浏览必填字段。
通用测距 API
Android 16 包含新的 RangingManager,提供了在受支持的硬件上,确定本地设备与远程设备之间距离和角度的方法。RangingManager 支持使用多种测距技术,如 BLE 信道探测、基于 BLE RSSI 的测距、超宽带和 Wi-Fi 往返时间。
行为变更
每次发布 Android 版本时,我们都力求使平台变得更加高效和强大,在应用需求与系统性能、电池续航等因素之间寻求平衡。但这可能会导致影响兼容性的行为变更。
ART 内部变更
利用 Android 运行时 (ART) 内部结构的代码,可能无法在运行 Android 16 以及更早 Android 版本 (通过 Google Play 系统更新来更新 ART 模块) 的设备上正常工作。这些结构正在发生变化,以提高 ART 的性能。
受此影响的应用需要进行更新。依赖内部结构始终会导致兼容性问题,因此尤为重要的是,避免依赖使用内部 ART 结构的代码 (或包含代码的库),因为 ART 的更改与设备运行的平台版本无关;它们通过 Google Play 系统更新推送给超过 10 亿台设备。
预测性返回的迁移或停用
对于以 Android 16 或更高版本为目标并运行在 Android 16 或更高版本设备上的应用,默认会启用预测性返回系统动画 (返回主屏幕、跨任务和跨 activity)。此外,系统不会调用已弃用的 onBackPressed,也不再分发 KeyEvent.KEYCODE_BACK。
如果您的应用拦截了返回事件,而您尚未迁移到预测性返回,请更新您的应用以使用受支持的返回导航 API,或在应用 AndroidManifest.xml 文件的 <application> 或 <activity> 标签中,将 android:enableOnBackInvokedCallback 属性设置为 false,以暂时停用该功能。
针对 "三按钮" 导航的预测性返回支持
对于已正确迁移到预测性返回的应用,Android 16 为 "三按钮" 导航提供了预测性返回支持。长按返回按钮会触发预测性返回动画,让用户可以预览返回按钮前往的位置。
此行为适用于系统中支持预测性返回动画的所有区域,包括系统动画 (返回主屏幕、跨任务和跨 activity)。
优化按固定比率进行的作业调度
在以 Android 16 为目标平台之前,scheduleAtFixedRate 会因为不在有效的进程生命周期内而错过任务执行;当应用返回到有效的生命周期时,则会立即执行所有错过的任务。
而以 Android 16 为目标平台后,当应用返回到有效的生命周期时,scheduleAtFixedRate 最多会立即执行一次错过的任务。此行为变更旨在提升应用性能。请通过测试来确保您的应用不受影响。您还可以通过使用应用兼容性框架并启用 STPE_SKIP_MULTIPLE_MISSED_PERIODIC_TASKS 兼容性标志进行测试。
有序广播的优先级范围不再是全局的
在 Android 16 中,使用 android:priority 属性或 IntentFilter#setPriority() 跨不同进程的广播传递顺序将无法保证。有序广播的广播优先级将仅在同一应用程序进程内有效,而不是跨所有系统进程。
此外,广播优先级将被自动限制在 (SYSTEM_LOW_PRIORITY + 1、SYSTEM_HIGH_PRIORITY - 1) 的范围内。
如果您的应用执行以下任一操作,则可能会受到影响:
您的应用已声明多个进程,并都为同一 Intent 设置了广播接收器优先级。
您的应用进程与其他进程交互,并期望以特定顺序接收广播 Intent。
如果进程之间需要相互协调,则应使用其他协调渠道进行通信。
Gemini 扩展程序
Samsung 在 S25 系列上推出了新的 Gemini 扩展程序,展示了 Android 应用与 Gemini 强大功能集成的新方法。我们正努力将此功能运用在更多设备形态上。
🔗 Samsung 在 S25 系列上推出了新的 Gemini 扩展程序
https://blog.google/products/gemini/new-gemini-app-updates-android/
2025 年即将发布的
两个 Android API 版本
本预览版适用于 Android 计划在 2025 年第二季度推出的下一个主要版本,并且我们计划在第四季度发布另一个带有新开发者 API 的版本。第二季度发布的主要版本将是 2025 年内唯一包含可影响应用的计划行为变更的版本。第四季度发布的次要版本将包含功能更新、优化和问题修复,但不包括任何影响应用的行为变更。
我们将继续以季度为周期发布 Android 版本。为确保质量始终如一,我们会在第二季度和第四季度发布两次 API 版本之间的空档期进行两次增量更新 (第一和第三季度)。我们正在积极与设备合作伙伴合作,为尽可能多的设备提供第二季度版本。
Google Play 中应用的目标 API 级别要求及相关日期保持不变;我们计划每年发布一次要求,且仅与主要 API 级别相关联。
如何做好准备
除了对下一个主要版本进行兼容性测试之外,请您确保根据新的 SDK 编译应用,并使用兼容性框架启用 targetSdkVersion 控制的行为变更,以便进行早期测试。
应用兼容性
Android 16 预览版计划自 2024 年 11 月开始执行,并于 2025 年第二季度最终公开发布。我们将在开发阶段的各个关键里程碑时刻为您的开发和测试环境提供更新。每次更新都会包括 SDK 工具、系统映像、模拟器、API 参考文档和 API 差异。目前,我们已经做好了在预览版计划中测试核心 API 的准备工作,所以我们将在博客和 Android 16 开发者网站上着重介绍关键 API。
我们预计将在 2025 年 3 月实现平台稳定性里程碑。在这一关键阶段,我们将提供最终的 SDK/NDK API,以及最终的内部 API 和面向应用的系统行为。自那时起,距离最终版本发布还有几个月时间,您可以充分利用这段时间完成测试工作。
开始使用 Android 16
在 Beta 版阶段,您可以注册任何受支持的 Pixel 设备,以便以 OTA 方式下载此版本和未来的 Android Beta 版更新。如果您没有 Pixel 设备,可以在 Android Studio 中使用 64 位的 Android 模拟器系统映像。
如果您当前使用的是 Android 16 开发者预览版 2 或已加入 Android Beta 版计划,我们会为您提供 Beta 版 1 的 OTA 方式更新链接。
如果您使用的是 Android 25Q1 Beta 版,并希望获得 25Q1 的最终稳定版本并退出 Beta 版,则需要忽略 25Q2 Beta 版 1 的 OTA 更新,等待 25Q1 版的发布。
为获得最佳的 Android 16 开发体验,我们建议您使用 Android Studio (Meerkat) 的最新预览版。设置完成后,您可以执行以下操作:
使用新的 SDK 进行编译,在 CI 环境中测试,并在我们反馈页面的跟踪页中报告问题。
测试您当前应用的兼容性,了解您的应用是否受到 Android 16 版本变更的影响,将您的应用安装到搭载 Android 16 的设备或模拟器上进行全面测试。
我们将在整个 Android 16 发布周期内定期更新预览版/Beta 版系统映像和 SDK。如果您安装了 Beta 版,则将通过 OTA 方式自动获取未来所有后续预览版和 Beta 版更新。
欢迎您访问 Android 16 开发者网站获取完整信息,并持续关注 "Android 开发者" 微信公众号,及时了解更多开发技术和产品更新等资讯动态!