最近,Android官方发布了 Android 14 首个开发者预览版,欢迎大家在体验之余提出自己的宝贵意见。这些反馈意见将决定 Android 未来能否更好地服务于所有用户。Android 14 在继续帮助开发人员提升工作效率的同时,也在性能、隐私、安全性和用户自定义等方面做出增强。
同时,Android 将全年不断带来更多增强与新功能,您可以通过 Android 14 开发者预览版与季度平台发布(QPR)测试计划提交的反馈,将帮助我们不断完善 Android 中的方方面面。而最终的正式版预计会在8月底对外发布。
想要提前体验Android 14的新功能,可以参考Android 14预览版体检。下面我们来看看Android 14预览版都带来了哪些新功能。
一、新特性和API
1,多种设备和外形支持
Android 14 以之前的 Android 12L 与 13 为基础,加强了对平板电脑及可折叠设备的支持。为了帮助您轻松面向不同屏幕尺寸开发应用程序,我们建立了 窗口大小类、滑动窗格布局、Activity 嵌入与带约束框体等,目前 Jetpack Compose套件已经全部提供支持。
同时,为了帮助简化不同设备平台的准备工作,我们更新了针对 大屏幕的应用程序质量指南,并提供关于为大屏 / 可折叠设备开发软件的更多指南内容。大屏画廊(large screen gallery)中包含经过验证的设计模式,以及围绕应用程序支持的市场设计灵感,包括 社交与通讯、媒体、生产力、购物 及 阅读 等各种应用程序类型。
多设备体验 也是 Android 下一步发展中的重要组成部分。您现在已经可以使用跨设备 SDK 来体验预览版,借此在不同设备及外形规格之上建立起通行的丰富体验。并且,未来还将有更多功能选项向您开放。
1.1 简化后台工作
Android 14 将继续努力优化应用程序的协同方式,改善系统健康状况及电池续航,提供更好的最终用户体验。
2,Scheduler与Foreground Services
此前,某些后台工作的执行方式过于复杂,确实没有必要(例如在 WiFi 环境下下载大文件)。对此,我们正为这项工作建立标准路径,借此简化应用程序开发来改善用户体验。但在前台服务方面,我们决定继续使用原有思路,只为面向用户的最高优先级任务进行保留,确保 Android 14 能够改善资源消耗和电池续航。
在 Android 14 中,我们正对现有 Android API(包括 Foreground Services 和 JobScheduler)进行变更,包括为用户启动的数据传输添加新功能,并对前台服务类型做出新的声明要求。现在,应用程序可以更轻松地管理由 用户启动的数据传输作业,包括下载和上传操作——例如仅在 WiFi 环境下执行上传 / 下载。通过对前台服务类型的强制声明要求,大家可以明确定义应用程序 后台工作的意图,同时明确其中哪些用例适用于前台服务。此外,Android官方也将推出新政策,以确保这些 API 得到正确使用。
3,优化广播
Android 14版本中,我们对内部广播系统进行了多项优化,旨在提高电池续航和响应速度。虽然大多数优化限于 Android 内部,不会对应用程序造成影响,但我们也调整了应用程序进入缓存状态后接收 上下文注册 广播的方式。具体来说,指向上下文注册接收程序的广播可能会排队,在目标脱离缓存状态后才被实际传递给应用程序。此外,包括 BATTERY_CHANGED 在内的一些重复性上下文注册广播可能会被合并为单一最终广播,并在应用程序脱离缓存状态后一次性交付。
4,精准闹钟
调用精准闹钟会影响设备资源,例如电池续航。因此在 Android 14 中,针对 Android 13+(SDK 33+)的新安装应用必须首先向用户申请 SCHEDULE_EXACT_ALARM 特别授权,之后才能设置精准闹钟。应用可以通过提示将用户引导至设置界面,但我们仍鼓励各位开发者评估实际用例,尽可能选择其他 更灵活的替代方法。
针对 Android 13+(SDK 33+)的时钟和日历应用,在其核心应用工作流程中仍可使用精准闹钟,且仅须在安装时声明获取 USE_EXACT_ALARM 普通权限。但除非符合 政策条款 的要求,否则应用无法通过清单中的此项权限,将其应用版本发布至 Play 商店。
5,非线性缩放的大字体
之前,Pixel 设备上的最高字体放大比例为130%。不过从 Android 14 开始,用户将能够将字体放大至最大 200%。
为了解决文本过大的问题,从 Android 14 起,系统会自动应用非线性字体缩放曲线,确保字体已经较大的段落放大速度较慢、原本字体较小的段落放大更快,如下图。
在 Android 14 中,您可以使用“辅助功能 ->显示大小和文本”设备中的“字体大小”选项,以最大字体尺寸测试您的应用 UI。请确保高速后的大文本字体在 UI 中正确反映,且不会导致文本内容被换行截断。更多细节,请参考我们的最佳实践说明文档。
6,为应用设置语言偏好
现在,可以使用 LocaleManager.setOverrideLocaleConfig来动态更新应用的 localeConfig本地配置,以自定义 Android 设置中各应用语言列表中显示的语言集。通过这种方式,您可以自定义各地区的语言列表、运行 A/B 实验,并在应用使用服务器端本地化推送时提供经过更新的语言环境。
当然,IME 现已可通过使用 LocaleManager.getApplicationLocale来知晓当前应用的 UI 语言,并相应更新键盘语言。
7,语法性别 API
语法性别 API可以帮助开发者在具有性别语法差异的语种环境下,根据用户性别做出表述调整。例如:
男性: “Vous êtes abonné à...”
女性: “Vous êtes abonnée à…”
中性: “Abonnement à…activé”
由于某些非英语语言中天然存在性别语法差异,这是个难以解决的老大难问题。与其在各字符串的基础上使用 ICU 中的 SelectFormat,新 API 大大优化了对当前使用者的性别体现(注意,指向的是当前使用者的性别,而非所指向者的性别)。
并且,如果需要显示个性化翻译,还需要为具备性别语法差异的各语种添加相应翻译,并集成语法性别 API。
8,隐私与安全
8.1 运行时接收器
在Android 14 版本中,必须明确指定动态 Context.registerReceiver() 的使用为“已导出”或者“未导出”,这也是对之前版本 manifest 层级工作的延续。了解更多:developer.android.com/about/versi…
8.2 更安全的Intent
为了防止在使用Intent的过程中被恶意应用所拦截,Android 14 会限制应用仅在内部发送未指定包的Intent。了解更多:developer.android.com/about/versi…
8.3 更安全的动态代码加载
动态代码加载(DCL)经常成为恶意软件和漏洞利用的突破口,动态下载的可执行文件可能被意外操纵,进而导致代码注入。针对 Android 14 的应用必须将动态加载的文件标记为只读。
val jar = File("DYNAMICALLY_LOADED_FILE.jar")
val os = FileOutputStream(jar)
os.use {
// Set the file to read-only first to prevent race conditions
jar.setReadOnly()
// Then write the actual file content
}
val cl = PathClassLoader(jar, parentClassLoader)
更多的细节: developer.android.com/about/versi…
8.4 阻止应用安装
恶意软件通常会以较旧的 API 为目标,借此绕过 Android 新版本中引入的安全和隐私保护机制。为了防止这种情况,从 Android 14 开始,targetSdkVersion 低于 23 的应用将无法安装。之所以选择以这个版本为分界线,是因为某些恶意软件会利用 targetSdkVersion 22 以避免受到 2015 年发布的 Android 6.0(API level 23)中的运行时权限模型的约束。
但在升级到 Android 14 之后,设备上 targetSdkVersion 低于 23 的全部已安装应用仍可正常运行。不过,你仍然可以使用ADB 命令来安装较旧的API level 的应用进行测试。
adb install --bypass-low-target-sdk-block FILENAME.apk
9,凭证管理器与密钥支持
最近,我们发布了凭证管理器的alpha版。这是一种新的 Jetpack API,可帮助开发者简化用户的身份验证过程,同时通过密钥支持来提高安全性。密码是一种比传统密码和其他可钓鱼身份验证因素的更安全替代选项,而且对用户来说更加方便(只需通过生物特征识别,即可在任意设备上安全登录)。了解更多:android-developers.googleblog.com/2023/02/bri…
9.1 应用兼容性
我们正倾力关注应用程序的兼容性,希望借此让各个平台版本提供更快、更顺畅的更新体验。在 Android 14 中,我们将大部分面向应用的变更都设置为可选项,因此您将有更多时间据此做应用变更,并在充分就绪后发布新版本。我们还更新了 Android 开发工具和流程,希望帮助大家快速做好准备。
OpenJDK 17 支持。此预览包括对 300 个 OpenJDK 17 类的支持。我们正努力在即将推出的开发者预览版中全面支持 Java 17 语言功能,包括记录类、多行字符串和模式匹配 instanceof 等。得益于 Google Play 的系统更新(Mainline 项目),目前已有超过 6 亿台 Android 设备能够接收到包含这些变更的最新 Android 运行时(ART)。我们将继续践行做出的承诺,为各类应用提供更安全、跨设备一致性更强的环境,也让更多用户能够体验到独立于设备平台之外的新功能与新特性。
降低变更测试与调试难度。为了帮助大家轻松对可能影响应用的变更开展测试,我们将在今年把大部分变更设置为可选项。您可以在开发者选项或通过 ADB 命令单独启用或禁用特定变更,了解更多:developer.android.com/about/versi…
9.2 平台稳定性里程碑
与去年一样,我们将提前向大家公布平台的稳定性里程碑,让您有更多时间规划应用的兼容性工作。在本次里程碑中,我们将提供最终 SDK/NDK API 以及最终内部 API 和面向应用的系统行为。我们预计将在 2023 年 6 月达到平台稳定性里程碑,在此之后您将有几周时间为正式版的发布做最终测试和准备。点击此处查看新版本的具体发布时间表:developer.android.com/about/versi…
二、立即体验 Android 14
本次开发者预览版包含值得尝试的 Android 14 功能、应用测试工具,也期待大家给出 反馈。要使用平板电脑和可折叠设备测试应用表现,最简单的方法是在 Android Studio SDK 管理器的最新预览版中,选择 Android Emulator 的平板电脑或可折叠配置项。在手机端,您可以立即在 Pixel 7 Pro、Pixel 7、Pixel 6a、Pixel 6 Pro、Pixel 6、Pixel 5a 5G、Pixel 5 或 Pixel 4a (5G) 设备上安装系统镜像。如果您没有 Pixel 设备,也可以在 Android Studio 中将 64 位系统镜像与 Android Emulator 配合使用。
要获得 Android 14 的最佳开发体验,我们建议您使用最新的 Android Studio Giraffe 预览版(或者更新的 Giraffe+ 版本)。设置完成之后,推荐您进行如下操作。
- 体验新功能与 API。 您的反馈对于尚处于早期阶段的开发者预览版非常重要,请在反馈页面中上报您发现的问题。
- 测试当前应用的兼容性。 了解您的应用是否受到 Android 14 中默认行为变化的影响;请将您的应用安装到运行 Android 14 的设备或模拟器上,并对其进行广泛测试。
- 通过可选变更测试您的应用。Android 14 中包含大量可选变更项,仅在您的应用针对 Android 14 完成升级后才会起效。
在整个 Android 14 发布周期内,我们将定期更新系统镜像和 SDK 预览版。此次初始预览版仅供开发者使用,不适合日常场景或普通用户,因此我们仅开放手动下载。一旦您手动安装了预览版,将自动通过无线方式获取未来所有预览版和 beta 版更新。我们建议您使用 Android Studio Giraffe 的最新预览版或更高版本即可体验Android 14。
如果您打算从 Android 13 QPR Beta 转向 Android 14 开发者预览版,但又不想擦除您的设备,我们建议您直接转移至开发者预览版 1。否则,后续当 Android 13 beta 更新时间到来时,您将无法在不擦除数据的前提下直接转向 Android 14 开发者预览版。在 Beta 版发布时,我们也将邀请消费者试用 Android 14。届时我们将开放 Android Beta 计划注册。但请注意,目前 Android Beta 计划尚不适用于 Android 14。 如需获取完整信息,请点击此处访问 Android 14 开发者网站:developer.android.com/about/versi…
参考: