发布者:Matthew McCullough – 产品管理副总裁、Android 开发者
Android 16 的第一个测试版现已推出,这意味着是时候向开发者和早期采用者开放体验了。
此版本包括对未来应用自适应性、实时更新、高级专业视频格式等的支持。
Android 自适应应用
用户希望应用能够在所有设备上无缝运行,无论屏幕尺寸和外形尺寸如何。为此,Android 16 正在逐步淘汰应用在大屏幕上限制屏幕方向和可调整大小的功能。这类似于 OEM 在过去几年中为大屏幕设备添加的功能,以允许用户以任何窗口大小和宽高比运行应用。
在宽度大于 600dp 的屏幕上,以 API 级别 36 为目标的应用将具有可调整大小的应用窗口;您应该检查您的应用,以确保现有 UI 可无缝缩放,在纵向和横向宽高比下都能正常工作。我们提供框架、工具和库来提供帮助。
主要变化:
大屏幕上的应用程序(但游戏不会)将忽略限制方向和调整大小的清单属性和 API 。
时间线:
Android 16(2025):针对 API 级别 36 的应用的变更适用于大屏幕(宽度为 600dp)(开发者可以选择退出)
2026 年 Android 版本:针对 API 级别 37 的应用将发生适用于大屏幕的变更(不可选择退出)
现在是让您的应用具有自适应性的好时机!您可以通过启用UNIVERSAL_RESIZABLE_BY_DEFAULT标志来使用应用兼容性框架测试这些覆盖,而无需定位。详细了解Android 16 中方向和可调整大小 API 的变更。
实时更新
实时更新是一种新的通知类型,可帮助用户监控并快速访问正在进行的重要活动。
新的ProgressStyle通知模板为实时更新提供了一致的用户体验,可帮助您构建这些以进度为中心的用户旅程:拼车、送货和导航。它支持自定义图标,用于开始、结束和当前进度跟踪、路段和点、用户旅程状态、里程碑等。
ProgressStyle 通知仅建议用于拼车、送餐和导航用例。
Notification
getNotification() {
return new Notification.Builder (mContext, CHANNEL_ID).setSmallIcon(R.drawable.ic_app_icon)
.setContentTitle("已请求乘车").setContentText("正在寻找附近的司机").setStyle(
new Notification.ProgressStyle ().addProgressSegment(
new Notification.ProgressStyle.Segment (100).setColor(COLOR_ORANGE))
.setProgressIndeterminate(true)).build();
}
protected
相机和媒体更新
Android 16 增强了对高质量媒体的播放、创建和编辑的支持,这是社交和生产力应用的关键用例。
高级专业视频
Android 16 引入了对高级专业视频(APV) 编解码器的支持,该编解码器旨在用于专业级高质量视频录制和后期制作。
APV编解码器标准具有以下特点:
感知无损视频质量(接近原始视频质量)
低复杂度和高吞吐量帧内编码(无像素域预测),以更好地支持编辑工作流程
通过轻量级熵编码方案,支持高达几 Gbps 的 2K、4K 和 8K 分辨率内容的高比特率范围
用于沉浸式内容以及实现并行编码和解码的帧平铺
支持各种色度采样格式和位深度
支持多次解码和重新编码,且不会造成严重的视觉质量下降
支持多视角视频和辅助视频,如深度、alpha 和预览
支持 HDR10/10+ 和用户定义的元数据
APV 的参考实现通过OpenAPV 项目提供。Android 16 将实现对 APV 422-10 配置文件的支持,该配置文件提供 YUV 422 色彩采样以及 10 位编码和高达 2Gbps 的目标比特率。
相机夜间模式场景检测
为了帮助您的应用了解何时切换至夜间模式相机会话以及何时从夜间模式相机会话切换,Android 16 添加了EXTENSION_NIGHT_MODE_INDICATOR。如果支持,它可以在Camera2 中的CaptureResult中使用。
这是我们在“Instagram 如何让用户拍摄出令人惊叹的低光照片”博客文章中简要提到即将推出的 API 。该文章是关于如何实现夜间模式的实用指南,并附带一个案例研究,该案例研究将更高质量的应用内夜间模式照片与应用内相机共享的照片数量增加联系起来。
垂直文字
Android 16 增加了对垂直渲染和测量文本的低级支持,为库开发者提供基础的垂直书写支持。这对于日语等通常使用垂直书写系统的语言特别有用。Paint类中添加了一个新标志VERTICAL_TEXT_FLAG 。当使用Paint.setFlags设置此标志时,Paint 的文本测量 API 将报告垂直前进而不是水平前进,并且Canvas将垂直绘制文本。
注意:当前的高级文本 API(例如 Jetpack Compose 中的文本、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 () } // 垂直绘制文本
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向AccessibilityNodeInfo添加了setFieldRequired,以便应用可以告知无障碍服务表单字段的输入是必需的。对于需要填写多种表单(甚至包括必填条款和条件复选框等简单表单)的用户来说,这是一个重要的场景,它可以帮助用户一致地识别必填字段并在它们之间快速导航。
通用测距 API
Android 16 包含新的RangingManager,它提供了在受支持的硬件上确定本地设备和远程设备之间的距离和角度的方法。RangingManager 支持使用各种测距技术,例如 BLE 信道探测、基于 BLE RSSI 的测距、超宽带和 WiFi 往返时间。
行为变更
随着 Android 的每次发布,我们都在努力使平台更加高效和强大,平衡应用需求与系统性能和电池寿命等方面的需求。这可能会导致影响兼容性的行为变化。
ART 内部变化
利用 Android 运行时 (ART) 内部结构的代码可能无法在搭载 Android 16 以及通过 Google Play 系统更新更新 ART 模块的早期 Android 版本的设备上正常运行。这些结构的改变有助于提高 Android 运行时 (ART) 的性能。
受影响的应用将需要更新。依赖内部结构始终会导致兼容性问题,但尤其重要的是避免依赖利用内部 ART 结构的代码(或包含代码的库),因为 ART 更改与设备所运行的平台版本无关;它们通过 Google Play 系统更新推送到超过十亿台设备。
有关更多信息,请参阅影响所有应用的 Android 16 变更以及对非 SDK 接口的限制。
预测性回归需要迁移或选择退出
对于以 Android 16 或更高版本为目标并在 Android 16 或更高版本设备上运行的应用,预测性返回系统动画(返回主页、跨任务和跨活动)默认处于启用状态。此外,已弃用的onBackPressed不会被调用,并且KeyEvent.KEYCODE_BACK不再被分派。
如果您的应用拦截了返回事件并且您尚未迁移到预测返回,请更新您的应用以使用支持的返回导航 API ,或通过在应用的 AndroidManifest.xml 文件的或标记中将android:enableOnBackInvokedCallback属性设置为false来暂时退出。
预测性返回支持三键导航
对于已正确迁移到预测返回功能的应用,Android 16 为三键导航提供了预测返回支持。长按返回按钮可启动预测返回动画,让用户可以预览返回按钮将带他们去往的位置。
此行为适用于系统中支持预测返回动画的所有区域,包括系统动画(返回主页、跨任务和跨活动)。
固定利率工作调度优化
在针对 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) 内。
如果您的应用程序发生以下任一情况,则可能会受到影响:
-
您的应用程序已声明多个进程,这些进程已为同一意图设置了广播接收器优先级。
-
您的应用程序进程与其他进程交互,并期望按照特定顺序接收广播意图。
如果流程之间需要相互协调,则应该使用其他协调渠道进行沟通。
扩展
三星刚刚在 S25 系列上推出了新的 Gemini Extensions,展示了 Android 应用与 Gemini 功能集成的新方式。我们正在努力让更多机型也能使用此功能。
2025 年将发布两个 Android API
此预览版适用于下一个 Android 主要版本,计划于 2025 年第二季度发布,我们计划在第四季度发布另一个包含新开发者 API 的版本。第二季度的主要版本将是 2025 年唯一包含可能影响应用的计划行为变更的版本。第四季度的次要版本将包含功能更新、优化和错误修复;它不会包含任何影响应用的行为变更。
2025 SDK 发布时间表显示,第一季度和第三季度将仅发布功能更新,第二季度将发布包含行为变更、API 和功能的主要 SDK 版本,第四季度将发布包含 API 和功能的次要 SDK 版本
我们将继续按季度发布 Android 版本。Q1 和 Q3 更新将在第二季度和第四季度 API 版本之间发布,并将提供增量更新以确保持续的质量。我们正在投入更多精力与我们的设备合作伙伴合作,将 Q2 版本推广到尽可能多的设备。
Google Play 中应用的目标 API 级别要求和相关日期没有变化;我们的计划是每年制定一项年度要求,与主要 API 级别挂钩。
如何做好准备
除了对下一个主要版本执行兼容性测试之外,请确保针对新 SDK 编译应用,并使用兼容性框架启用targetSdkVersion控制的行为变更,以便进行早期测试。
应用程序兼容性
Android 16 生产时间表显示了发布阶段,从 12 月到最终发布分别以蓝色和绿色突出显示“Beta 版本”和“平台稳定性”。
Android 16 预览计划从 2024 年 11 月开始,直到 2025 年第二季度最终公开发布。在关键开发里程碑处,我们将为您的开发和测试环境提供更新。每个更新都包括 SDK 工具、系统映像、模拟器、API 参考和 API 差异。我们将在博客和Android 16 开发者网站上重点介绍已准备好在预览计划中进行测试的关键 API 。
我们的目标是在 2025 年 3 月实现平台稳定性里程碑。在此里程碑上,我们将提供最终的 SDK/NDK API 以及最终的内部 API 和面向应用的系统行为。从那时起,您将有几个月的时间在最终发布之前完成测试。发布时间表详细信息请点击此处。
开始使用 Android 16
现在我们已经进入测试阶段,您可以注册任何受支持的 Pixel 设备,以无线方式获取此更新和未来的 Android Beta 更新。如果您没有 Pixel 设备,您可以在 Android Studio 中将64 位系统映像与 Android 模拟器结合使用。
如果您目前正在使用 Android 16 Developer Preview 2 或已经加入 Android Beta 计划,我们将为您提供 Beta 1 的无线更新。
如果您使用的是 Android 25Q1 Beta 版,并且想要获取 25Q1 的最终稳定版本并退出 Beta 版,则需要忽略无线更新到 25Q2 Beta 1 并等待 25Q1 的发布。
我们期待您的反馈,因此请在反馈页面上报告问题并提交功能请求。我们越早收到您的反馈,我们就能将更多的内容纳入最终版本的开发工作中。
为了在 Android 16 上获得最佳开发体验,我们建议您使用最新预览版Android Studio (Meerkat)。设置完成后,您需要执行以下操作:
针对新的 SDK 进行编译,在 CI 环境中进行测试,并在反馈页面上的跟踪器中报告任何问题。
测试您当前应用的兼容性,了解您的应用是否受到 Android 16 中更改的影响,并将您的应用安装到运行 Android 16 的设备或模拟器上并进行广泛测试。
在整个 Android 16 发布周期中,我们会定期更新预览版/测试版系统映像和 SDK。安装测试版后,您将自动通过无线方式获取所有后续预览版和测试版的未来更新。
如需完整信息,请访问Android 16 开发者网站。