Android15对外的beta版本7月2号才发布,目前的OpenFDE是基于Android11的,本文主要记录12、13、14的版本中桌面相关特性和freeform模式的总结
Android版本行为变更
摘要自AOSP官方版本文档,将与目前桌面环境功能相关的特性变更总结如下:
Android 12 | |||
---|---|---|---|
类别 | 类型 | 名称 | 备注 |
用户体验 | 变更(所有应用) | 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的补丁。