Android 14 目前已经开始在部分 Pixel 上推送更新,计划会在今年晚些时候在 Samsung Galaxy、iQOO、Nothing、OnePlus、Oppo、Realme、Sharp、Sony、Tecno、vivo 和小米等设备上开始发布支持,那么在适配之前,先让我们看看本次正式版最终发布了哪些东西。
PS : 依然没有惊喜。
性能和效率
Android 14 里的一大重点是提高了平台的性能和效率,例如在 Android 14 开始缓存的 App 会在短时间内被冻结,从而将少缓存进程消耗的 CPU 周期接近 50%。
缓存在这里是一种后台状态,其中应用实际上已经没运行,但仍加载在 RAM 中以便可以快速恢复,这也是 Android 里你经常看到 RAM 会被占用的原因。
而缓存进程是指当前不需要的进程,因此当其他地方需要内存等资源时,系统可以根据需要随意终止它。
一般来说缓存进程里 Activity 已经是 onStop() 了,所以对于用户来说是不可见的,不过通常来说,onDestroy() 在进程被系统终止的情况下,不能保证调用它。
也就是说,在 Android 14 里,除了前台服务 和 JobScheduler/WorkManager 之外,App 应该不在运行其他形式的后台工作。
另外还优化了广播 ,为了上面的冻结 App , Android 14 调整了 App 进入缓存状态后接收 context-registered 广播的方式,例如它们可能会排队并且重复同一个(例如BATTERY_CHANGED),也就是可能会合并到一个广播中。
而因为上述的两个优化,现在 Android 14 可以减少应用的冷启动,例如在 8GB 设备上,App 冷启动减少了 20%,在 12GB 设备上减少了 30% 以上,从而得到更快的应用启动效果。
另外,在 Android 14 里还对 ART 进行了优化,可在不影响性能的情况下将代码大小平均减少 9.3%,从而减少了内存占用 。
定制化
从 Android 14 开始,用户将能够将字体放大至 200%,实现非线性缩放功能的更大字体效果。
另外还设有每个 App 的语言首选项 支持,**可以使用 **LocaleManager.setOverrideLocaleConfig 动态更新 App 的 localeConfig ,从而自定义 Android 设置中每个 App 语言列表中显示的语言集。
IME 还可以使用 LocaleManager.getApplicationLocales 来了解当前 App 的 UI 语言从而支持更新键盘语言。
从 Android Studio Giraffe 和 AGP 8.1 开始就支持可以将 App 配置为支持上述的能力详细可以参考:developer.android.com/guide/topic...
新媒体能力
Android 14 增加了对 10 位高动态范围 (HDR) 图像的支持,并支持 Ultra HDR 图像格式,该格式完全向后兼容 JPEG,允许 App 与 HDR 图像无缝互操作。
Ultra HDR 在 JPEG 图像文件中对"对数"范围增益图图像进行编码,搜一不支持新格式的也能从图像文件中读取并显示传统的低动态范围图像。
Ultra HDR 目标是在 SDR 图像文件中编码附加信息,这些信息可与显示技术结合使用,在单个文件中生成最佳 HDR 呈现。
另外 Android 14 升级并改进了 Camera extensions,允许 App 有更长的处理时间,并在支持的设备上使用低光摄影等计算密集型算法来改进图像,这里主要是由 Camera2和 CameraX 提供了的扩展 API。
最后 Android 14 可以支持无损音频格式,通过 USB 有线耳机提供发烧级体验。
新的图形功能和尺寸管理
Android 14 添加了对 Custom meshes 的支持, Custom meshes 可以定义为三角形或三角带,并且可以选择进行索引。
另外 Android 14 还引入了 HardwareBufferRenderer 来协助使用 Android 的 Canvas API 通过硬件加速绘制到 HardwareBuffer 中,如果你的 App 涉及通过 SurfaceControl 与系统合成器通信以实现低延迟绘制时,这就会特别有用。
最后,Android 14 以 Android 12L 和 13 为基础,全面支持平板电脑和可折叠外形尺寸,包括:
- 支持增强型多任务处理的任务栏
- 大屏幕优化的系统应用和通知 UI
- Activity Embedding
- 增强 Letterboxing
- 改进的多媒体投影
关于折叠屏和大屏幕适配可见:juejin.cn/post/727030...
提高生产力
Android 14 包含许生产力更新,其中许多更新通过结合 Google Play 系统更新、Jetpack 库和 Google Play 服务去面向旧平台版本提供,例如:
- OpenJDK 17 支持 ,通过 Google Play 系统更新,超过 6 亿台设备能够接收 Android 14 附带的最新 Android 运行时 (ART) 更新。
- 凭证管理器和密钥支持 ,这是一个新的 Jetpack API,它在单个 API 中支持多种登录方法,例如用户名和密码、密钥以及联合登录解决方案(例如使用 Google 登录),通过 GMS 服务,Credential Manager 可支持到 Android 4.4(API 19)。
- Health Connect ,用于存储用户健康和健身数据,可以通过 Google Play 系统更新接收更新,无需单独下载。
- 前台服务 ,Android 14 提出了声明前台服务类型,并请求特定于类型的权限的新要求,另外 Google Play 也制订了政策来强制正确使用这些 API。
用户体验 与隐私安全
首先,Android 14 引入了新的预测返回系统动画(跨活动和跨任务) ,为确保自定义 activity 转换在 Android 14 及更高版本上支持预测性返回,App 可以使用 overrideActivityTransition
而非 overridePendingTransition
,这意味着转换效果会在用户滑回时播放。
举个例子,假设在返回堆栈中 activity B 位于 activity A 之上,你可使用以下方式处理自定义 activity 动画:
- 在 activity B 的
onCreate
方法中调用开始/结束转换效果。 - 当用户导航到 activity B 时,使用
OVERRIDE_TRANSITION_OPEN
;当用户滑回 activity A 时,使用OVERRIDE_TRANSITION_CLOSE
。 - 指定
OVERRIDE_TRANSITION_CLOSE
时,enterAnim
是 activity A 的进入动画,而exitAnim
是 activity B 的退出动画。
另外涉及隐私安全的还有:
-
数据共享更新 -- 用户将在位置运行时权限对话框中看到一个新内容,其中突出显示应用何时与第三方共享位置数据,用户可以在其中获取更多信息并控制应用的数据访问。
-
对照片和视频的部分访问权限 -- 当使用 SDK 34 的 App 请求 SDK 33 中引入的任何媒体权限 ( READ_MEDIA_IMAGES / READ_MEDIA_VIDEO ) 时,Android 14 用户现在只能向 App 授予对选定照片和视频的访问权限,也就是限制了访问的内容。
-
SDK 34 的 App 需要授予在发送 PendingIntent 或绑定服务时在后台启动 Activity 的权限。
-
阻止安装旧 SDK 版本 - targetSdkVersion 低于23 的 App 无法安装在 Android 14 上。
-
针对 Android 14 的 App 必须动态配置
Context.registerReceiver()
使用是否 "exported" 或 "unexported" 。 -
更安全的动态代码加载 - SDK 34 的 App 需要将动态加载的文件标记为只读
-
更安全的 implicit intents -- 对 SDK 34 的 App ,创建具有 implicit intents 的 pending intent 将引发异常。
-
全屏 Intent notifications - 由于全屏 Intent notifications是为要求用户立即关注的极高优先级通知而设计的,因此 Android 14 将在应用安装时授予此权限的 App 限制为仅提供呼叫和闹钟的应用,之后 App 可以启动设置页面,让用户在其中授予权限。
最后
等了这么久 Android 14 终于还是来了,当然其实并没有什么太惊喜的地方,反而需要适配和调整的又多了,如果你还没设配,或者不知道什么地方需要适配的,也可以看 Android 14 快速适配要点 。
最后,祝君好运,勇敢上 SDK 34 。