Android 14 适用于所有app的行为更改

1,168 阅读3分钟

Android 14 开发者预览版本已来,赶紧看看Google又做了哪些硬规吧。

行为更改:所有应用

Android 14 平台包含可能影响你的app的行为更改。以下行为更改适用于在 Android 14 上运行的所有app,无视targetSdkVersion。你应该测试你的app,然后根据需要进行修改,以适当地支持这些更改。

请确保同时查看了仅影响以 Android 14 为目标的 app 的行为更改列表.

核心功能

默认情况下拒绝预定精确的 alarms

精确的 alarms 用于有用户意图的通知,或用于需要在精确时间发生的操作。从 Android 14 开始,SCHEDULE_EXACT_ALARM 权限不再预先授予大多数新安装的以 Android 13及更高版本为目标的应用-默认情况下,该权限是被拒绝的。

了解有关对预定精确 alarms 权限的更改的更多信息。

app 被缓存时,使用上下文注册的广播将排队

在 Android 14 上,当 app 处于缓存状态时,系统会将上下文注册的广播放置在队列中. 这类似于 Android 12(API 级别 31)为异步 binder 事务引入的排队行为。清单声明的广播则不排队,app 将从缓存状态中被移除,以进行广播的传递。

当 app 离开缓存状态时,例如返回前台,系统会传送任何排队的广播。某些广播的多个实例可以合并为一个广播。

安全

最低可安装目标 API 级别

从 Android 14 开始,targetSdkVersion 低于 23 的 app 无法安装。 要求应用程序满足这些最低目标 API 级别要求,可以提高用户的安全性和隐私性。

恶意软件通常以较旧的 API 级别为目标,以绕过较新 Android 版本中引入的安全和隐私保护。例如,一些恶意软件 app 使用 22 的 targetSdkVersion,以避免受到 Android 6.0 Marshmallow(API 级别 23)于 2015 年引入的运行时权限模型的约束。Android 14 的这一变化使恶意软件更难避开安全和隐私改进。尝试安装针对较低 API 级别的 app 将导致安装失败,并在 Logcat 中显示以下消息:

INSTALL_FAILED_DEPRECATED_SDK_VERSION: App package must target at least SDK version 23, but found 7

在升级到 Android 14 的设备上,targetSdkVersion 低于 23 的任何 app 都将保持安装状态。

如果你需要测试针对较旧 API 级别的 app,请使用以下 ADB 命令:

adb install --bypass-low-target-sdk-block FILENAME.apk

辅助功能

非线性字体缩放至 200%

从 Android 14 开始,系统支持高达 200% 的字体缩放,为弱视用户提供额外的辅助选项,这些选项符合 Web 内容辅助功能指南 (WCAG)

如果你已经使用缩放像素 (sp) 单位来定义文本大小,那么此更改可能不会对你的 app 产生重大影响。 但是,你应该在启用最大字体大小 (200%) 的情况下执行 UI 测试 以确保你的 app 可以容纳更大的字体大小而不影响可用性。