Android 14 如期发布,Android 工程副总裁 Dave Burke 发文详细介绍了这一版本的新功能。
原文地址:https://android-developers.googleblog.com/2023/10/android-14-is-live-in-aosp.html
作者 | GPT-3.5 责编 | 梦依丹
出品 | CSDN(ID:CSDNnews)
Android 14 已正式发布,其源代码已上传至 Android 开源项目(AOSP)。Android 14 旨在提升开发者的工作效率,同时增强性能、隐私、安全性,以及用户的个性化体验。
从发布之日开始,Android 14 将逐步推向部分 Pixel 设备,而在今年晚些时候,您还可以在一些您喜爱的设备上找到它,包括三星 Galaxy、iQOO、Nothing、OnePlus、Oppo、Realme、Sharp、Sony、Tecno、vivo 和小米。
本文重点介绍了对开发者影响最大的 Android 14 变化。要查看 Android 14 的所有变更,请访问 Android 14 开发者网站:https://developer.android.com/about/versions/14。
性能与效率
Android 14 的一个主要关注点是提升平台的性能和效率。
冻结缓存应用
在 Android 14 之前,缓存应用程序的运行相对自由。而在 Android 14 中,我们会在一段时间后冻结这些缓存应用,使它们不再占用 CPU 时间。在 Android 14 Beta 版本中,我们发现相比于 Android 13 公开设备,缓存进程的 CPU 使用量降低了高达 50%。因此,除了传统的 Android 应用生命周期 API,如前台服务、JobScheduler 或 WorkManager,后台工作将受到限制。
广播优化
为了延长缓存应用程序的冻结时间(即不获得 CPU 时间),我们调整了应用程序在进入缓存状态后接收上下文注册广播的方式;这些广播可能会被排队,并且重复的广播,如电池状态改变(BATTERY_CHANGED),可能会合并成一个广播。
更快的应用启动
通过对缓存应用和广播进行优化,Android 14 增加了平台中缓存应用的最大数量的长期限制,从而减少了冷启动应用的次数,而这一改进将根据设备的内存容量而扩展。在 8GB 设备上,测试团队看到冷启动应用的数量减少了 20%,而在 12GB 设备上减少了超过 30%。冷启动相对于热启动来说速度较慢,而且在电能方面成本较高。这一工作有效地改善了电能使用和整体应用启动时间。
减少内存占用
改进 Android 运行时(ART)对 Android 用户体验有着重要影响。代码大小是我们关注的关键指标之一;生成的文件越小,对内存(包括 RAM 和存储空间)的影响就越小。在 Android 14 中,ART 包含了优化措施,将代码大小平均减少了 9.3%,而不会影响性能。
定制
定制一直是 Android 基因中的核心要素,而 Android 14 则延续了我们对 Android 用户的承诺,使他们能够根据个人需求调整自己的使用体验,包括增强的可访问性和国际化功能。
具有非非线性缩放功能的更大字体- 从 Android 14 开始,用户能够将字体放大到 200%。之前,在 Pixel 设备上,最大的字体缩放比例为 130%。我们采用了非线性字体缩放曲线,以确保已经足够大的文本不会像较小的文本一样以相同的速度增大。
每个应用的语言偏好设置 - 您可以使用 LocaleManager.setOverrideLocaleConfig 动态更新应用的 localeConfig,用来自定义 Android 设置中每个应用的语言列表中显示的语言集。输入法编辑器 (IME) 现在可以使用 LocaleManager.getApplicationLocales 来了解当前应用的界面语言,以便更新键盘语言。从 Android Studio Giraffe 和 AGP 8.1 开始,您可以配置您的应用以自动支持 Android 13 的每个应用的语言偏好。
区域偏好设置- 区域偏好设置允许用户个性化温度单位、每周的第一天以及数字系统。
Grammatical Inflection - Grammatical InflectionAPI 允许您更轻松地为使用有语法性别的语言的用户添加支持。为了展示个性化的翻译,您只需要为受影响的语言添加每个语法性别的翻译并集成该 API。
新媒体功能
图像的 Ultra HDR - Android 14 增加了对 10 位高动态范围(HDR)图像的支持,并支持超级高动态范围图像格式。该格式与 JPEG 完全向后兼容,使应用程序能够与 HDR 图像无缝交互。
相机扩展中的缩放、对焦、后视图等功能- Android 14 升级并改进了相机扩展,允许应用程序处理更长的处理时间,从而在支持的设备上使用计算密集型算法,例如低光条件下的摄影,以获得更出色的图像。
无损 USB 音频- Android 14 设备可以支持无损音频格式,从而实现了通过USB有线耳机获得音乐发烧友级别的音频体验。
新的图形能力
使用顶点和片段着色器的自定义网格- Android 14 增加了对自定义网格的支持,这些网格可以定义为三角形或三角形条带,并且可以选择进行索引。这些网格是通过自定义属性、顶点步幅、varying,以及在 AGSL 中编写的顶点/片段着色器来指定的。
Canvas 的硬件缓冲渲染器- Android 14 引入了 HardwareBufferRenderer 来协助使用 Android 的 Canvas API 以硬件加速的方式绘制到 HardwareBuffer 中。这在您的使用情况涉及通过 SurfaceControl 与系统合成器进行低延迟绘制时特别有帮助。
跨形态开发
Android 14 在 Android 12L 和 13 中的工作基础上,支持平板电脑和可折叠外形因素,包括支持增强多任务处理的任务栏、大屏幕优化的系统应用和通知界面、活动嵌入、增强型信函板、改进的媒体投影等功能。我们提供了适用于大屏幕的应用质量指导,以及关于为大屏幕和可折叠设备开发的额外学习机会,帮助您优化应用在所有 Android 设备上的表现。此外,大屏幕设计画廊还包括了社交与通讯、媒体、生产力、购物和阅读应用的设计模式和灵感。
提高生产力
Android 14 包含了许多更新,专注于使您的开发体验更加一致、有趣和高效。这些更新中的许多通过结合使用Google Play系统更新、Jetpack库和Google Play服务,已经在较旧的平台版本上提供,因此您可以借此触达更多用户。
OpenJDK 17 支持- 得益于 Google Play 系统更新(Project MAInline),超过 6 亿台设备都能够接收到随 Android 14一同发布的最新 Android 运行时(ART)更新。
凭据管理器和密码匙支持- 凭据管理器是一种新的 Jetpack API,它支持多种登录方法,包括用户名和密码、密码匙以及联合登录解决方案(例如,与谷歌一起登录),全部集成在一个API中,从而简化了您的集成过程。通过使用Google Play 服务,Credential Manager 支持回溯至 Android 4.4(API级别19)。
Health Connect - Health Connect 是一个由用户控制的设备上存储用户健康和健身数据的仓库,它使得跨应用程序和连接设备之间实现集成的健康和健身体验变得比以往更加容易。Health Connect 是 Android 平台的一部分,通过 Google Play 系统更新进行更新,无需单独下载,同时也可在 Google Play 商店上作为应用提供给旧版设备。
卓越的系统共享表- 为了让您的应用程序用户获得丰富、一致的共享体验,Android 14 中的系统共享表可以进行自定义操作和改进排名的配置。
更一致、更可靠的前台服务- 我们与三星等硬件制造商合作,旨在打造更一致的开发者体验和更可靠的用户体验。因此,Android 14 引入了新的要求,需要声明前台服务类型并请求特定类型的权限,同时我们也制定了 Google Play 政策来强制执行这些 API 的适当使用。此外,我们还新增了一种用户发起的数据传输工作类型,通过利用 JobScheduler 的约束条件(例如,无计量的 wifi 等网络约束条件),使用户能够更顺畅地管理大型用户发起的上传和下载操作。
用户体验
预测性返回- Android 14 引入了新的预测性返回系统动画,包括跨活动和跨任务的动画,以扩展 Android 13 中引入的返回主页动画。这些系统动画仍然处于开发者选项之后,以便有更多的时间进行进一步的完善,并让更多的应用程序选择使用预测性返回功能。Material 和 Jetpack 预测性返回动画已经可以供用户使用。
隐私和安全
数据共享更新- 用户将在位置运行时权限对话框中看到一个新的部分,该部分突出显示了应用程序与第三方共享位置数据的情况,用户可以在此获取更多信息并控制应用程序的数据访问。
照片和视频的部分访问权限 - 当您的应用程序针对 SDK 34 请求 SDK 33 引入的任何视觉媒体权限(READ_MEDIA_IMAGES / READ_MEDIA_VIDEO)时,Android 14 用户现在可以选择只允许您的应用程序访问特定的照片和视频。为了使您的应用程序适应这一变化,我们建议您遵循我们最近的最佳实践。
后台活动启动- Android 10(API 级别 29)及更高版本对应用程序在后台运行时启动活动的时间做出了限制。为了进一步减少意外中断的情况,针对 Android 14 的应用程序需要在发送 PendingIntent 或绑定服务时授予后台启动活动的权限。
阻止安装旧版 SDK 的应用程序- 为了防止针对旧版 API 级别绕过安全和隐私保护措施的恶意软件,Android 14 不允许安装目标SDK版本低于23的应用程序。
运行时接收器- 针对 Android 14 的应用程序必须明确指示是否应将动态 Context.registerReceiver 的使用视为 "已导出" 或 "未导出",这是前几个版本中清单级工作的延续。
安全的全屏意图通知- 由于全屏意图通知设计用于极高优先级的通知,要求用户立即关注,因此 Android 14 仅在应用安装时授予权限给那些只提供通话和闹钟功能的应用程序。您的应用程序现在可以启动设置页面,让用户授予权限。
更安全的动态代码加载- 针对 Android 14 的应用程序要求将动态加载的文件标记为只读。
更安全的隐式意图- 针对 Android 14 的应用程序,使用隐式意图创建可变的待定意图将引发异常,从而防止它们被用于触发意外的代码路径。应用程序需要将待定意图设为不可变,或将意图设为显式。
应用程序兼容性
我们致力于通过优先考虑应用程序兼容性,使每个平台发布的更新更加快速和平稳。在 Android 14 中,我们将大多数影响应用程序的变化设置为选择性,直到您的应用程序目标 SDK 版本达到 34,以便您有更多时间进行必要的应用程序更改。我们还更新了工具和流程,以帮助您更早地做好准备。
更容易测试和调试更改- 为了让您更容易测试可能会影响您的应用程序的选择性更改,今年我们将再次提供许多开关功能。通过这些开关,您可以从开发者选项或使用 adb 单独启用或禁用这些更改。
为您的应用程序、库、工具和游戏引擎做好准备!
现在是完成最终兼容性测试并发布任何必要更新以确保应用程序体验顺畅的时候了。
如果您开发的是 SDK、库、工具或游戏引擎,那么现在更重要的是发布任何必要的更新,以防止下游的应用程序和游戏开发人员受到兼容性问题的阻碍,并让他们能够针对最新的 SDK 功能。请务必告知您的开发人员是否需要更新以完全支持 Android 14。
测试您的应用程序涉及将您的生产应用程序安装到运行 Android 14 的设备上;您可以使用 Google Play 或其他方式。在所有应用程序流程上进行测试,查找功能或用户界面方面的问题。查看行为变更以便更集中地进行测试。每个 Android 版本都包含对平台的变更,这些变更旨在改进隐私、安全性和整体用户体验,而这些变更可能会影响您的应用程序。以下是一些需要测试的主要变更:
允许对照片和视频进行部分访问- 在 Android 14 上,当应用程序请求 Android 13(API 级别 33)引入的任何可视媒体权限时:READ_MEDIA_IMAGES 或 READ_MEDIA_VIDEO,用户可以授予对其照片和视频的部分访问权限。如果您的应用程序已经使用了照片选择器,您无需采取任何措施来支持此更改。否则,您应该使用新的 READ_MEDIA_VISUAL_USER_SELECTED 权限来优化用户体验。
安全的全屏意图通知- 在 Android 14 上,创建全屏意图通知的应用程序仅限于提供电话和闹钟功能的应用程序。对于不符合这个配置的应用程序,Google Play 商店会撤销默认的 USE_FULL_SCREEN_INTENT 权限。
默认情况下拒绝安排精确的通知- 从 Android 14 开始,SCHEDULE_EXACT_ALARM 权限不再被预先授予大多数针对 Android 13 及更高版本的新安装应用程序,该权限默认被拒绝。
非线性字体缩放至 200% - 从 Android 14 开始,系统支持将小文字大小的字体缩放至 200%,为低视力用户提供了符合 Web 内容可访问性指南(WCAG)的附加可访问性选项。
切记在兼容性测试中使用应用程序正在使用的库和 SDK。您可能需要更新到当前的 SDK 版本,或向开发人员寻求帮助。
发布当前应用程序的兼容版本后,您就可以开始更新应用程序的 targetSdkVersion。查看应用针对 Android 14 时适用的行为变化,并使用兼容性框架帮助快速检测问题。