今天,我们发布了 Android 17 的首个 Beta 版,继续致力于打造一个优先考虑隐私保护、安全性和精细性能的平台。此 build 继续致力于打造更具适应性的 Android 应用,显著增强了相机和媒体功能,推出了用于优化连接的新工具,并扩展了配套设备的配置文件。此版本还标志着我们向开发者社区提供新版本的方式发生了根本性转变,从传统的开发者预览版模式转变为 Android Canary 版计划
开发者预览版之外
Android 已将传统的“开发者预览版”替换为持续的 Canary 渠道。这种新的“始终开启”模式有以下三大主要优势:
- 更快访问:功能和 API 在通过内部测试后会立即进入 Canary 版,而无需等待季度发布。
- 稳定性更高:Canary 中的早期“实战测试”可带来更完善的 Beta 版体验,其中包含更接近最终版本的新 API 和行为变更。
- 更轻松的测试:Canary 支持 OTA 更新(无需再手动刷写),并且作为一个单独的更新渠道,可以更轻松地与 CI 工作流集成,让您能够尽早针对即将到来的潜在变更提供即时反馈。
Android 17 时间表
我们将迅速从 Beta 版过渡到 3 月份的目标平台稳定性里程碑。在此里程碑版本中,我们将提供最终的 SDK/NDK API 和基本最终的面向应用的最终行为。从那时起,您将有几个月的时间在最终版本发布之前完成测试。
一年的发布版本
我们计划通过一系列季度版本更新,让 Android 17 继续获得更新。第 2 季度即将发布的版本是唯一一个会引入计划中的应用重大行为变更的版本。我们计划在第四季度发布一个次要 SDK 版本,其中包含更多 API 和功能。
屏幕方向和尺寸可调整性限制
随着 Android 17 Beta 版的发布,我们进入了自适应路线图的下一阶段:Android 17(API 级别 37)移除了开发者针对大屏设备(sw > 600 dp)的屏幕方向和尺寸可调整性限制选择停用的功能。
如果您的应用以 SDK 37 为目标平台,则必须做好适应准备。用户希望应用在任何情况下都能正常运行,无论是在平板电脑上进行多任务处理、展开设备,还是使用桌面窗口化模式,并且希望界面能够填满空间并适应设备姿态。
SDK 37 的主要变化
以 Android 17 为目标平台的应用必须确保与 Android 16 中引入的清单属性和运行时 API 逐步关停兼容。在大屏设备(较小尺寸 ≥ 600dp)上运行时,系统会忽略以下属性和 API:
| 清单属性/API | 忽略的值 |
| screenOrientation | portrait、reversePortrait、sensorPortrait、userPortrait、landscape、reverseLandscape、sensorLandscape、userLandscape |
| setRequestedOrientation() | portrait、reversePortrait、sensorPortrait、userPortrait、landscape、reverseLandscape、sensorLandscape、userLandscape |
| resizeableActivity | 全部 |
| minAspectRatio | 全部 |
| maxAspectRatio | 全部 |
豁免和用户控制
这些更改专门针对大屏设备;它们不适用于小于 sw600dp 的屏幕(包括传统平板手机)。此外,归类为游戏的应用(基于 android:appCategory 标志)不受这些限制的约束。
另请务必注意,用户始终拥有控制权。他们可以通过系统的宽高比设置明确选择启用/停用应用的默认行为。
配置变更更新
为了提高应用兼容性,并尽可能减少视频播放中断、输入丢失和其他类型的破坏性状态丢失,我们正在更新 Activity 重新创建的默认行为。从 Android 17 开始,对于通常不需要重新创建界面的特定配置更改(包括 CONFIG_KEYBOARD、CONFIG_KEYBOARD_HIDDEN、CONFIG_NAVIGATION、CONFIG_UI_MODE [仅当 UI_MODE_TYPE_DESK 发生更改时]、CONFIG_TOUCHSCREEN 和 CONFIG_COLOR_MODE),系统将不再默认重启 activity。相反,正在运行的 activity 只需通过 onConfigurationChanged 接收这些更新即可。如果您的应用依赖于完全重启来重新加载资源以实现这些更改,您现在必须使用新的 android:recreateOnConfigChanges 清单属性明确选择启用此行为,该属性可让您指定哪些配置更改应触发完整的 activity 生命周期(从停止到销毁再到重新创建),以及相关的常量 mcc、mnc 和新常量 keyboard、keyboardHidden、navigation、touchscreen 和 colorMode。
准备应用
我们已发布相关工具和文档,以便您轻松完成这项工作。我们的这篇博文重点介绍了相关指导,并提供了解决常见问题的策略。应用需要支持横向和纵向布局,以适应各种宽高比的窗口尺寸,因为限制屏幕方向或宽高比将不再是可行的选项。我们建议您使用 Android 17 Beta 版 1 在 Pixel Tablet 或 Pixel Fold 模拟器(配置为 targetSdkPreview = "CinnamonBun")上测试应用,或者使用应用兼容性框架在 Android 16 设备上启用 UNIVERSAL_RESIZABLE_BY_DEFAULT。
性能
无锁 MessageQueue
在 Android 17 中,以 SDK 37 或更高版本为目标平台的应用将收到 android.os.MessageQueue 的新实现,该实现是无锁的。新实现可提升性能并减少丢帧,但可能会破坏那些会反射 MessageQueue 私有字段和方法的客户端。
分代垃圾回收
Android 17 为 ART 的并发标记压缩收集器引入了分代垃圾回收。此优化在全堆回收的基础上引入了更频繁、资源消耗更少的新生代回收,旨在减少总体垃圾回收 CPU 成本和时间。通过 Google Play 系统更新,搭载 Android 12(API 级别 31)及更高版本的 10 亿多部设备也可使用 ART 改进。
静态 final 字段现在真正是 final 字段
从 Android 17 开始,以 Android 17 或更高版本为目标平台的应用将无法修改“static final”字段,从而使运行时能够更积极地应用性能优化。尝试通过反射(和深度反射)执行此操作始终会导致抛出 IllegalAccessException。通过 JNI 的 SetStatic<Type>Field 方法系列修改它们会导致应用立即崩溃。
自定义通知视图限制
为减少内存用量,我们限制了自定义通知视图的大小。此更新填补了一个漏洞,该漏洞允许应用使用 URI 绕过现有限制。此行为受目标 SDK 版本限制,并且对以 API 37 及更高版本为目标平台的应用生效。
新的性能调试 ProfilingManager 触发器
我们为 ProfilingManager 引入了多个新的系统触发器,可帮助您收集深入的数据来调试性能问题。这些触发器包括 TRIGGER_TYPE_COLD_START、 TRIGGER_TYPE_OOM 和 TRIGGER_TYPE_KILL_EXCESSIVE_CPU_USAGE。
如需了解如何设置新的系统触发器,请参阅基于触发器的性能分析和检索和分析性能分析数据文档。
媒体和相机
Android 17 为媒体和相机应用带来了专业级工具,并提供无缝过渡和标准化音量等功能。
动态相机会话更新
我们已将 updateOutputConfigurations() 引入 CameraCaptureSession。这样一来,您无需重新配置整个相机拍摄会话即可动态附加和分离输出 Surface。此项更改可实现摄像头使用情形和模式(例如拍摄静态图片与拍摄视频)之间的无缝过渡,而无需在摄像头启动期间配置和保留应用可能需要的所有摄像头输出 Surface,从而节省内存并降低代码复杂性。这有助于消除操作期间用户可见的故障或卡顿。
fun updateCameraSession(session: CameraCaptureSession, newOutputConfigs: List<OutputConfiguration>)) {
// Dynamically update the session without closing and reopening
try {
// Update the output configurations
session.updateOutputConfigurations(newOutputConfigs)
} catch (e: CameraAccessException) {
// Handle error
}
}逻辑多摄像头设备元数据
现在,当使用组合了多个物理摄像头传感器的逻辑摄像头时,您可以从参与捕获的所有活动物理摄像头(而不仅仅是主摄像头)请求额外的元数据。以前,您必须实现变通方法(有时会分配不必要的物理数据流)才能从辅助有效摄像头获取元数据(例如,在变焦的镜头切换期间,辅助摄像头处于有效状态)。此功能在 CaptureRequest 和 CaptureResult 中引入了一个新键 LOGICAL_MULTI_CAMERA_ADDITIONAL_RESULTS。通过在 CaptureRequest 中将此键设置为 ON,TotalCaptureResult 将包含来自这些其他有效物理相机的元数据。您可以使用 TotalCaptureResult.getPhysicalCameraTotalResults() 访问此全面的元数据,以获取更详细的信息,从而优化相机应用中的资源使用情况。
支持多功能视频编码 (VVC)
Android 17 新增了对多功能视频编码 (VVC) 标准的支持。这包括在 MediaFormat 中定义 video/vvc MIME 类型、在 MediaCodecInfo 中添加新的 VVC 配置文件,以及将支持集成到 MediaExtractor 中。此功能将适用于支持硬件解码且具有相应驱动程序的设备。
视频录制恒定质量
我们已向 MediaRecorder 添加了 setVideoEncodingQuality()。这样一来,您就可以为视频编码器配置恒定质量 (CQ) 模式,从而更精细地控制视频画质,而不仅仅是设置比特率。
后台音频强化
从 Android 17 开始,音频框架将对后台音频互动(包括音频播放、音频焦点请求和音量更改 API)强制执行限制,以确保这些更改是由用户有意发起的。
如果应用在处于无效生命周期时尝试调用音频 API,音频播放和音量更改 API 将静默失败,而不会抛出异常或提供失败消息。音频焦点 API 将失败,并返回结果代码 AUDIOFOCUS_REQUEST_FAILED。
隐私权和安全
弃用明文流量属性
android:usesCleartextTraffic 属性现已弃用。如果您的应用以 Android 17 或更高版本为目标平台,并且依赖于 usesCleartextTraffic="true",但没有相应的网络安全配置,则默认情况下会禁止明文流量。建议您迁移到网络安全配置文件,以便进行精细控制。
HPKE 混合加密
我们正在推出一个公共服务提供方接口 (SPI),用于实现 HPKE 混合加密,从而能够通过公钥和对称加密 (AEAD) 的组合实现安全通信。
连接和电信
增强型 VoIP 通话记录
我们即将推出用户偏好设置管理功能,以实现应用 VoIP 通话记录集成。这包括在系统拨号器中支持主叫方和参与者头像 URI,从而实现对通话记录隐私权的精细用户控制,并丰富集成 VoIP 通话记录的视觉显示效果。
Wi-Fi 测距和邻近感应
Wi-Fi 测距功能已通过新的邻近检测功能得到增强,支持连续测距和安全的对等发现。对 Wi-Fi Aware 测距功能的更新包括用于对等方句柄和 PMKID 缓存的新 API,以实现 11az 安全测距。
开发者工作效率和工具
配套设备应用的更新
我们在 CompanionDeviceManager 中引入了两个新配置文件,以改进设备区分和权限处理:
- 医疗设备:此配置文件允许医疗设备移动应用通过一次点按请求所有必需的权限,从而简化设置流程。
- 运动手环:DEVICE_PROFILE_FITNESS_TRACKER 配置文件允许配套应用明确表明它们正在管理运动手环。这样可确保用户获得准确的体验,并使用不同的图标,同时重复使用现有的手表角色权限。
此外,CompanionDeviceManager 现在提供了一个统一的对话框,用于设备关联和附近权限请求。您可以利用 AssociationRequest.Builder 中的新 setExtraPermissions 方法,在现有的关联流程中捆绑附近设备权限提示,从而减少向用户显示的对话框数量。
开始使用 Android 17
您可以注册任何受支持的 Pixel 设备,以通过无线下载方式获取此 Android Beta 版更新以及未来的更新。如果您没有 Pixel 设备,可以在 Android Studio 中使用 Android 模拟器搭配 64 位系统映像。
如果您目前加入了 Android Beta 版计划,系统会提供 Beta 1 的无线下载更新。
如果您使用的是 Android 26Q1 Beta 版,并且想要使用 26Q1 的最终稳定版并退出 Beta 版计划,则需要忽略 26Q2 Beta 1 的无线下载更新,并等待 26Q1 的发布。
我们期待您的反馈,因此请在反馈页面上报告问题并提交功能请求。我们越早收到您的反馈,在最终版本中采纳的意见就越多。
为了获得 Android 17 的最佳开发体验,我们建议您使用最新预览版的 Android Studio (Panda)。设置完成后,您应执行以下操作:
- 使用新版 SDK 进行编译,在 CI 环境中进行测试,并通过反馈页面在我们的跟踪器中报告任何问题。
- 测试当前应用的兼容性,了解应用是否会受到 Android 17 中变更的影响,并将应用安装到搭载 Android 17 的设备或模拟器上,然后进行广泛的测试。
在整个 Android 17 发布周期内,我们会定期更新预览版/Beta 版系统映像和 SDK。安装 Beta 版 build 后,您将自动通过无线下载方式获得所有后续预览版和 Beta 版的未来更新。
如需了解完整信息,请访问 Android 17 开发者网站。
加入对话
随着我们迈向 Platform Stability,并将在今年晚些时候发布 Android 17 的最终稳定版本,您的反馈仍然是我们最宝贵的财富。无论您是 Canary 渠道的抢先体验者,还是在 Beta 1 上进行测试的应用开发者,都可以考虑加入我们的社区并提交反馈。我们听到了您的心声。
继续阅读
-
产品资讯
今天,我们推出了 Gemma 4,这款最新的尖端开放模型具备复杂的推理和自主工具调用功能,可助力开发者提升 Android 开发效率。
Matthew McCullough • 阅读用时:2 分钟
-
产品资讯
Android 17 今天已正式达到平台稳定性,Beta 3 现已发布。这意味着 API 表面已锁定;您可以执行最终的兼容性测试,并将以 Android 17 为目标平台的应用推送到 Play 商店。
Matthew McCullough • 阅读用时:5 分钟
-
产品资讯
我们希望让您能够更快、更轻松地构建高品质 Android 应用,而帮助您提高工作效率的一种方式就是让您随时随地都能使用 AI。
Matthew McCullough • 阅读用时:2 分钟
随时了解最新动态
每周通过电子邮件接收最新的 Android 开发洞见。