作者 / Dave Burke, VP of Engineering
让 Android 在数十亿用户的手中良好运行,是我们、Android 设备制造商,以及开发者社区的一致追求。
今天,我们为大家带来 Android 14 的第一个开发者预览版。大家针对预览版提出的反馈具有重要意义,必将惠及 Android 生态中的每一个人。我们在 Android 14 中继续提升开发者生产力,并在性能、隐私、安全和用户定制方面不断改进。这个预览版仅仅是个开始,我们会在后续的发布中和大家分享更多内容。
每一年 Android 都会带来改进和新的功能,在这一路的进化过程中,大家在 Android 14 开发者预览版和季度平台发布 (Quarterly Platform Release, QPR) Beta 版测试计划中提交的反馈至关重要。我们在 Android 14 开发者网站 提供了很多关于本次预览版的信息,包括 Pixel 系统映像的下载和发布时间表。非常期待听到大家的想法,在这里我们提前感谢大家,是大家的持续支持,让 Android 能成为属于每一个人的平台!
跨设备以及多尺寸屏幕的支持
Android 14 在 Android 12L 和 13 的基础上,继续对平板电脑和可折叠设备带来良好的支持。为了帮助您构建适配各种屏幕尺寸的应用,我们在 Jetpack Compose 中提供了 窗口大小类别、滑动窗格布局 (SlidingPaneLayout)、Activity 嵌入,以及 使用约束布局的 Box (BoxWithConstraints) 等内容。随着每一次平台更新,我们都会帮助您更轻松地在所有 Android 支持的屏幕上优化自己的应用。
我们也准备了很多这方面的内容来帮助您做好准备。您可以从我们更新过的 大屏幕设备应用质量指南 入手,然后进一步了解如何为 大屏幕 和 可折叠设备构建应用。大屏幕设计图库 里提供了成熟的设计模式,以及 社交和通信、多媒体、生产力、购物 和 阅读 等市面上常见应用类型的设计参考。
在 Android 未来的图景中,多设备体验 是重要的组成部分。您今天就可以开始使用 跨设备 SDK 预览版来构建能直观地在多台甚至不同类型的设备之间协作的丰富体验。我们后续会和大家分享更多这方面的信息,敬请期待。
精简后台工作
我们在 Android 14 中继续优化应用的协作方式,以改善系统健康状况和电池寿命,并提升终端用户体验。
针对 JobScheduler 和前台服务的更新和补充
有些后台工作,比如仅使用 Wi-Fi 下载大型文件,其复杂度很高,这显然是不必要的。我们正在为这些工作打造一个标准方案,以简化您的应用开发工作,进而改善用户体验。我们也在规范前台服务的使用,只为面向用户的最高优先级任务保留这些服务,以便改善 Android 的资源消耗和电池寿命。
Android 14 中对一些现有的 Android API (包括 Foreground Services 和 JobScheduler) 进行了变更,加入了支持 用户发起的数据传输 的新功能。我们还更新了声明前台服务类型的要求。用户发起的数据传输作业将简化用户发起的下载和上传的管理,特别是传输存在限制的时候,比如仅使用 Wi-Fi 进行下载。声明前台服务类型 的要求可以让开发者清楚地定义应用的后台工作意图,同时明确哪些使用场景适合前台服务。此外,Google Play 将推出新政策,以确保开发者合理使用上述 API,后续我们会公布这方面的更多信息。
广播优化
我们对内部广播系统进行了诸多优化,以改善系统健康,加快反应速度。虽然大多数优化措施限于 Android 内部,不会影响到您的应用,但我们已经调整了应用进入缓存状态后接收 上下文注册的广播 的方式。所有发送给上下文注册接收器的广播都要排队,只有在应用离开 缓存状态 后才会被传递给应用。此外,一些重复的上下文注册广播,如 BATTERY_CHANGED,可能会被合并为一个最终广播,并在应用离开缓存状态时完成交付。
精确闹钟
调用精确闹钟会明显消耗设备的资源,如电池寿命。因此在 Android 14 中,新安装的以 Android 13+ (SDK 33+) 为目标平台的应用,如果其并非时钟或日历应用,必须在设置 精确闹钟 之前要求用户授予 SCHEDULE_EXACT_ALARM 特殊权限。应用可以通过 Intent 将用户 引导至设置页面 进行授权操作,但我们建议大家仔细评估应用使用场景,尽可能选择 更加灵活的闹钟替代方案。
以 Android 13+ (SDK 33+) 为目标平台的时钟和日历应用,如果其核心工作流程必须依赖精确闹钟,则能够声明 USE_EXACT_ALARM 的正常权限 (安装时授权)。除非 Play 的政策 允许,否则清单 (manifest) 中包含此权限的应用版本将无法在 Play 商店发布。
定制化
我们将继续保障 Android 用户围绕其个人需求的定制化体验,为此我们进一步改进了无障碍和国际化功能。
更大的字体与非线性缩放
从 Android 14 开始,用户能够把字体尺寸放大至 200%。此前,Pixel 设备上的字体最多能放大至 130%。
为了缓解文字过大带来的问题,从 Android 14 开始,字体缩放曲线会是非线性的,且该缩放方案会直接启用。这样就可以确保已经足够大的文本的放大速度不会和较小的文本相同。
△ (左) 未放大 (中) 线性放大至 200% (右) 非线性放大至 200%
在 Android 14 中,开发者需要使用最大的字体尺寸来测试应用的界面。请前往 无障碍 > 显示大小和文字 (Accessibility > Display size and text) 页面设置 字体大小。请确保调整后的大字体设置能被反映在界面中,并且不会出现文字截断等问题。我们的 文档 提供了这方面的最佳实践供大家参考。
按应用设定语言偏好
现在可以通过 LocaleManager.setOverrideLocaleConfig 动态更新应用的 localeConfig,以定制 Android 设置页面中每个应用各自的语言列表中显示的语言清单。这样您就可以为每个地区定制语言列表,进行 A/B 实验,如果应用使用服务器端推送本地化设置,则可以直接为应用更新语言地区设置。
IME 现在可以使用 LocaleManager.getApplicationLocales 来获取当前应用的界面语言,从而同步更新键盘语言。
词形变化 API
词形变化 (Grammatical Infection) API 可以让开发者更轻松地为需要使用语法性别的用户提供支持。
例如:
- 阳性: “Vous êtes abonné à…”
- 阴性: “Vous êtes abonnée à…”
- 中性: “Abonnement à…activé”
语法性别是某些语言中特有的语法现象,而且在一些非英语语言中很难规避。这个新 API 可以让开发者更容易针对使用者性别 (这里指的是正在浏览界面的人,而不是正在被提及的人) 展示内容。而如果在 ICU 中使用 SelectFormat,就只能基于每个字符串单独进行设置了。
开发者只需为相应的语言添加性别变位译文,并使用这个 API,即可为不同用户展示定制化的译文。
隐私和安全
运行时接收器
以 Android 14 为目标平台的应用必须说明动态 Context.registerReceiver() 的使用是否应被视为 “导出” 或 “未导出”。这是以前版本中清单级工作的延续,请访问官方 文档 了解详细信息。
更加安全的隐式 Intent
为了防止恶意应用拦截 Intent,以 Android 14 为目标平台的应用禁止在内部发送不指定 package 的 Intent。请访问官方 文档 了解详细信息。
更加安全的动态代码加载
动态代码加载 (Dynamic code loading, DCL) 为恶意软件和漏洞提供了可能,因为动态下载的可执行文件可能被意外修改,导致代码注入问题。以 Android 14 为目标平台的应用动态加载的文件需要标记为只读。请访问官方 文档 了解详细信息。
阻止应用安装
恶意软件通常以较旧的 API 级别为目标,以绕过较新的 Android 版本中引入的安全和隐私保护措施。因此,从 Android 14 开始,targetSdkVersion 低于 23 的应用将无法安装。之所以选择这个特定的版本,是因为一些恶意应用使用 targetSdkVersion 22 来避免受到 2015 年 Android 6.0 (API 级别 23) 引入的运行时权限模式的影响。
在升级到 Android 14 的设备上,任何 targetSdkVersion 低于 23 的已安装应用仍将保留。
大家可以使用以下 ADB 命令来识别应用是否使用旧 API 级别:
adb install --bypass-low-target-sdk-block FILENAME.apk
凭证管理器和 Passkey 支持
我们最近发布了 凭证管理器 (Credential Manager) 的 Alpha 版本,这是一个新的 Jetpack API,用于简化用户的认证流程,同时也通过使用 Passkey 来提高安全性。Passkey 是一种代替密码和其他易受攻击的认证方式的新方案,其安全性有显著的提升。对用户来说也更方便,他们只需要在任何设备上进行一次生物识别就可以安全地登录。请阅读 官方博文 了解详细信息。
应用兼容性
在发布新的平台版本时,我们会优先考虑应用的兼容性,以让更新过程更快、更顺畅。在 Android 14 中,大多数面向应用的变更依然是可选的,这样能为大家提供更多的时间进行调整和适配。我们还更新了工具和流程,帮助大家更快地做好准备。
OpenJDK 17 支持 – 预览版已支持 300 个 OpenJDK 17 类。我们正在努力为后续的开发者预览版带来完整的 Java 17 语言功能。这些功能包括记录类、多行字符串和 instanceof 模式匹配。通过 Google Play 系统更新 (Project Mainline),超过 6 亿台设备能够获得最新的 Android Runtime (ART) 更新,包括对 OpenJDK 17 的支持。这也是我们的承诺之一,即为应用提供跨设备、更加一致、更加安全的环境,并且在平台版本更新之外持续为用户带来新特性和新功能。
更轻松地针对变更进行测试和调试 – 为了让您更轻松地测试可能会影响应用的可选变更,我们今年依然提供了许多变更的开关选项。您可以在开发者选项或 adb 中单独强制启用或停用这些变更。请访问官方 文档 了解详细信息。
△ 开发者选项中的应用兼容性开关
平台稳定性里程碑 – 和去年一样,我们会提前向您告知平台稳定性里程碑,让您有更多的时间来规划应用兼容性工作。在抵达这个里程碑时,我们不仅会交付最终版 SDK/NDK API,还会锁定最终版的内部 API 和面向应用的系统行为。我们预计将在 2023 年 6 月抵达平台稳定里程碑,这样在正式版本发布之前,您还会有几周的时间进行最终测试。发布时间表 详见:
即刻开始体验 Android 14
不论您是想体验 Android 14 的功能、测试应用还是 提交反馈,都可以从这次的开发者预览版开始。如果您想要测试应用在平板电脑和可折叠设备上的兼容性,最简单的方法是使用 Android Studio SDK 管理器最新预览版中 Android 模拟器的平板电脑或可折叠设备配置进行测试。对于手机,只需 将系统映像 下载并刷入 Pixel 7 Pro / 7 / 6a / 6 Pro / 6 / 5a 5G / 5 / 4a (5G) 设备,即可立即开始使用。如果您没有 Pixel 设备,则可以在 Android Studio 中使用带有 64 位系统映像的 Android 模拟器。
为了获得最佳的 Android 14 开发体验,我们建议您使用 Android Studio Giraffe 的最新预览版或更高版本。
设置好 SDK 后,您可以:
- 体验新功能和 API – 在开发者预览版的早期阶段,您的反馈至关重要。您可以在我们的跟踪页 报告问题。
- 测试应用的兼容性 – 测试您的应用是否受到 Android 14 默认行为变更的影响。请将应用安装到运行 Android 14 的设备或模拟器上进行彻底的测试。
- 使用可选变更项测试应用 – Android 14 提供了可选的行为变更,这些变更仅在您的应用以新平台为目标时才会造成影响。尽早了解和评估这些变更十分重要。为了便于测试,您可以 单独启用或者禁用这些变更。
我们将在整个 Android 14 的发布周期内定期更新预览版系统映像和 SDK。这次发布的初始预览版仅供开发者使用,不面向日常或消费者使用,因此我们仅提供手动下载。在手动安装预览版后,您将通过 OTA 方式自动获得所有后续预览版和 Beta 版更新。请访问官方 文档 了解详细信息。
如果您打算从 Android 13 QPR Beta 版 转移到 Android 14 开发者预览版,并且不想擦除您的设备,我们建议您现在就安装本次的开发者预览版 1,否则之后 Android 13 Beta 版可能发布构建日期更新的版本,届时您就无法在不擦除数据的情况下直接安装 Android 14 开发者预览版了。
随着我们接近 Beta 版的发布,我们也会邀请消费者来体验 Android 14,届时将开放 Android Beta 体验注册。但请注意,目前 Android 14 尚未提供 Beta 版本。
请访问 Android 14 开发者网站 了解本次发布的详细信息。
* Java 和 OpenJDK 是 Oracle 和/或其附属公司的商标或注册商标。
谷饭原创编/译文章,作者:脉脉不得语,转载请注明出处来自谷饭,并加入本文链接: https://www.goofan.com/2023/02/android-14-developer-preview/。