Android 14 Beta 3 现已发布,标志着进入到 Android 开发周期的下一个阶段。Beta 3 依旧围绕着其核心主题打造,即隐私、安全、性能、开发者生产力和用户定制,同时继续完善平板电脑、可折叠设备等大屏设备上的体验。
Beta 3 也让 Android 14 抵达平台稳定性里程碑,这意味着开发者 API 和所有面向应用的行为都已最终确定,供大家评估和整合进自己的应用。一些重点更新内容包括新的无障碍功能 (如非线性字体放大)、隐私功能更新 (包括照片/视频的部分访问)、新的手势导航动画,以及与 OpenJDK 17 LTS 版本进一步对齐的功能。
非线性字体放大
从 Android 14 开始,系统默认支持字体放大至 200%。这项变更为弱视用户提供了符合网络内容无障碍指南 (WCAG) 的更丰富的无障碍功能选项。请在启用最大文字尺寸 (200%) 的条件下进行用户界面测试,以确保你的应用能适应更大的文字尺寸且不影响可用性。为了更好地适配此功能,也请确保你在 Configuration 或 DisplayMetrics 中没有硬编码计算 sp,以及通过 TypedValue 的 applyDimension() 和 deriveDimension() 在 sp 和 px 之间进行转换。
对照片和视频授予部分访问权限
当你的应用请求任意视觉媒体权限 (READ_MEDIA_IMAGES 或 READ_MEDIA_VIDEO,于 Android 13,API 33 中引入) 时,用户可以仅授予对媒体库的部分访问权限。当你的应用切换至后台,或当用户主动杀掉你的应用时,系统会将这些部分访问权限做为单次授权处理,继而最终关闭这些权限。如果你的应用有遵守此类授权的最佳实践,此项变更不会造成影响。Android 14 引入了 READ_MEDIA_VISUAL_USER_SELECTED 权限来帮助应用更好地支持这些变更。建议考虑使用照片选择器来为用户提供安全的方式让应用指定访问某些照片和视频,这样无需申请权限,体验也更流畅。
数据安全信息更加凸显
为了更好地保护用户隐私,Android 14 在系统中增加了一些位置来展示你在 Play 管理中心的表单中声明的信息。对于某些权限,项目团队在系统运行时权限对话框中加入了一个可点击的部分,用来进一步展示应用的数据共享情况。系统对话框的这一部分会展示诸如为什么你的应用需要和第三方共享数据等信息,以及为用户提供跳转链接,用来管理你应用的数据访问设置。建议用户审查自己应用的位置数据共享政策,并相应地更新应用在 Google Play 数据安全部分中声明的信息。
一些需要注意的变更 (适用于 targetSdkVersion 为 API 34 或更高的应用):
必须提供前台服务类型
如果你的应用以 Android 14 为目标平台,则你必须为应用中的每个前台服务指定至少一个前台服务类型。请务必选择能代表应用实际用例的前台服务类型。系统会检查你是否选择了正确的前台服务类型,以及应用是否正确请求运行时权限或使用所需的 API。比如,如果应用的前台服务类型是 FOREGROUND_SERVICE_TYPE_LOCATION,则系统会认为其需要申请 ACCESS_COARSE_LOCATION 或 ACCESS_FINE_LOCATION 权限。Android 14 为健康和远程消息传递场景新增了对应的前台服务类型,而且也为短期服务、特殊用途和系统豁免保留了新的类型。如果你应用中的某个场景和这些类型都不匹配,强烈建议将这部分逻辑迁移至使用 WorkManager 或用户发起的数据传输作业。
OpenJDK 17 更新
Android 14 的一些变更旨在让核心库与最新的 OpenJDK LTS 版本功能对齐,这些变更可能会影响到你应用的兼容性,包括正则表达式、UUID 处理、涉及到 ProGuard 的问题,以及增加的 java.lang.ClassValue。
安全变更
以 Android 14 为目标平台的应用不能再向内部组件发送特定的隐式 Intent。运行时注册的广播接收器必须指定导出行为,除非它们只接收系统广播。动态加载的代码文件必须被标记为只读。如果 zip 文件名包含 ".." 或以 "/" 开头,则 ZipFile(String) 和 ZipInputStream.getNextEntry() 会抛出 ZipException 异常,以避免触发压缩路径遍历漏洞。从后台启动 Activity 现在有了额外的限制,对调用非 SDK 接口也有了更新的限制。
更多详情可访问 Android 14 开发者网站。