Android15对外的beta版本7月2号才发布,目前的OpenFDE是基于Android11的,本文主要记录12、13、14的版本中桌面相关特性和freeform模式的总结

Android版本行为变更

摘要自AOSP官方版本文档,将与目前桌面环境功能相关的特性变更总结如下:

Android 12

类别

类型

名称

备注

用户体验

变更(所有应用)

Display#getRealSize 和 getRealMetrics:废弃和限制 Android 12 中废弃了 Display API getRealSize() 和 getRealMetrics()。

Android 设备有许多不同的外形规格,如大屏设备、平板电脑和可折叠设备。为了针对每种设备适当地呈现内容,您的应用需要确定屏幕或显示屏尺寸。随着时间的推移,Android 提供了不同的 API 来检索这些信息。 可以在应用内获取整个屏幕的尺寸了

用户体验

变更(所有应用)

多窗口模式下的所有应用 现在,多窗口模式是大屏设备上的标准行为。

在大屏设备上(中或较大窗口大小类别), 平台支持在多窗口模式下使用所有应用,无论 配置。如果为 resizeableActivity="false",则将应用放入 兼容模式,以适应显示屏尺寸。不确定所谓兼容模式是否表现正常

安全和隐私设置

变更(以 Android 12 及更高版本为目标平台的应用)

大致位置 现在,当应用请求确切位置信息权限时,用户可以选择仅授予大致位置信息权限。

确切位置:可访问确切位置信息。 大致位置:只能访问大致位置信息。 按以往经验:一个用GPS,一个不用GPS

安全和隐私设置

变更(所有应用)

剪贴板访问通知 现在,当某个应用从另一个应用访问剪贴板数据时,会向用户发送通知。

增加了粘贴提示和几个API

安全和隐私设置

变更(所有应用)

应用无法关闭系统对话框 现在,应用无法再调用用于关闭系统对话框的 intent。

应用不能关闭系统的对话框

安全和隐私设置

变更(所有应用)

不受信任的触摸事件被屏蔽 在叠加层以不安全的方式屏蔽应用的情况下,Android 12 会阻止应用使用触摸事件。

基于安全,不让触摸事件穿透窗口,可能会影响按键助手

activity 生命周期

变更(所有应用)

按下“返回”按钮时,不再完成根启动器 activity 现在,系统返回按钮会将 activity 移到后台,而不是完成该 activity。

activity及所在task在后退按钮时不会finish而是movetoback

媒体

新功能和 API

兼容的媒体转码 采用现代格式编码的视频现在可以自动转换,以便在不支持这些格式的应用中进行播放。

视频编解码支持H265和HDR10 HDR10+

图形和图片

新功能和 API

更简单的模糊处理、颜色滤镜及其他效果 新的 API 可让您更轻松地将常见图片效果应用到视图和呈现层次结构。

系统级的高斯模糊背景支持,前面在Surfaceflinger中确认了代码

核心功能

新功能和 API

自动更新应用 借助新的 API 方法,安装程序应用可以执行应用更新而无需用户确认。

开始支持应用静默更新?

Android 13

隐私权和安全

变更(所有应用)

从剪贴板中隐藏敏感内容 如果应用允许用户将敏感内容复制到剪贴板,则必须添加一个标志,以便从剪贴板内容预览中隐藏这些内容。

隐藏敏感内容

隐私权和安全

变更(所有应用)

停止使用共享用户 ID 如果应用使用已废弃的 android:sharedUserId 属性且不再依赖该属性的功能,则应改为采用其他机制。

仅做记录,不确定我们开发的系统应用是否需要修改

隐私权和安全

变更(以 Android 13 及更高版本为目标平台的应用)

细化的媒体权限 现在,应用必须使用单独的权限(而不是 READ_EXTERNAL_STORAGE 权限)来请求访问不同类型的媒体。

访问媒体文件的权限变了,图库要改

用户体验

变更(以 Android 13 及更高版本为目标平台的应用)

应用颜色主题会自动应用于 WebView 内容 对于以 Android 13(API 级别 33)或更高版本为目标平台的应用,setForceDark() 方法已废弃。相反,WebView 现在始终会根据应用的主题属性 isLightTheme 来设置媒体查询 prefers-color-scheme。

优化webview的UI

开发者工作效率和工具

新功能和 API

ART 优化 Android 13 通过更新 ART 运行时来提升所有应用的性能和效率。

优化java虚拟机性能

图形

新功能和 API

可编程的着色器 应用可以使用可编程的 RuntimeShader 对象制作高级效果。

在view中直接使用shader编写显示内容,而不需要egl环境

Android 14

核心功能

变更(所有应用)

应用只能终止自己的后台进程 当您的应用调用 killBackgroundProcesses() 时,API 只能终止您自己应用的后台进程。

任务管理器的限制

核心功能

变更(以 Android 14 及更高版本为目标平台的应用)

必须提供前台服务类型 如果应用以 Android 14(API 级别 34)或更高版本为目标平台,则必须为应用中的每个前台服务指定至少一个前台服务类型。

使用前台服务的应用需要适配

安全性

变更(以 Android 14 及更高版本为目标平台的应用)

针对从后台启动 activity 的额外限制 对于以 Android 14(API 级别 34)或更高版本为目标平台的应用,如果其想要在发送其他应用的 PendingIntent 或绑定该应用的服务时向其授予后台 activity 的启动权限,则必须选择启用。

从后台启动activity有限制,可能需要绕开

开发者工作效率和工具

新功能和 API

针对应用商店的改进 Android 14 引入了多个新的 PackageInstaller API,可帮助应用商店改善其用户体验。

应用商店(GMS?)下载前就要确认 更新不需要确认 部分更新时不会杀应用

图形

新功能和 API

适用于画布的硬件缓冲区渲染程序 为协助使用 Android 的 Canvas API 通过硬件加速在 HardwareBuffer 中绘制内容,Android 14 引入了 HardwareBufferRenderer。

优化渲染

用户体验

新功能和 API

应用屏幕共享功能让用户能够在录制屏幕内容期间共享应用窗口,而非整个设备屏幕。 使用应用屏幕共享时,状态栏、导航栏、通知和其他系统界面元素会从共享显示屏中排除。系统只会分享所选应用的内容。 应用屏幕共享可让用户运行多个应用,但仅限单个应用共享内容,从而提高效率和隐私性。

屏幕共享只共享某个窗口,而不是桌面

用户体验

新功能和 API

Sharesheet 自定义操作和排名改进 Android 14 更新了系统 Sharesheet,以便为用户提供自定义应用操作和信息更丰富的预览结果。

分享列表排序


平板电脑、大屏设备及多窗口相关特性

官方文档只有大屏设备特性的文档如下:

平板电脑和大屏设备支持

支持多窗口模式

并没有专门介绍freeform,对他来说,freeform只是window的一个模式,就是窗口可以随意移动,随意调整大小,就像窗口如果全屏了,就处于fullscreen模式,不属于freeform的windowingmode了。

对比现在的Android11上freeform的启动配置, 在AOSP的Android14源码上,配置方法差不多一致。

从功能特性来看,有三个功能有升级改善。

1、多任务交互,与分屏模式和任务栏的操作相关

2、多实例,activity 可以在不同的任务中多次实例化

3、activity 嵌入功能,可以通过创建 XML 配置文件或进行 Jetpack WindowManager API 调用确定应用如何显示其 activity(并排或堆叠),可以轻松实现平行视界的功能

其他窗口相关组件对比源码差别很小,同样需要应用lineageos的补丁。