Android12新版本终于发布了

Android12于2021年5月19日凌晨发布,按照惯例来看看都有哪些新特性吧

发布日期 2021-05-20

前言

美国时间2021.05.18~2021.05.20,时隔两年的2021 Google I/O大会以线上直播的形式重新归来。

Android 12 是Google有史以来最具雄心的版本之一,我们致力于创造一套能适应您的需求的全新用户界面,提高性能,同时将隐私和安全置于核心。对于开发者来说,我们为大家提供了更多的工具,方便您在手机、笔记本电脑、平板电脑、可穿戴设备、电视和汽车上构建令人愉悦的体验。

2021 I/O大会视频:https://events.google.com/io/?lng=zh-CN
I/O大会官网:https://events.google.com/io/
Android 12 介绍:https://developer.android.com/about/versions/12/behavior-changes-12?hl=zh-cn

google一直致力于个性化的 Android 通过开放的生态系统,如今在全球范围内已发展到超过 30 亿台活动的 Android 设备。我们一起来看看Android 12有哪些新体验吧!

开发者预览版

谷歌安排了三次开发者预览:一次在2月,一次在3月,一次在4月。一共会有四次测试版,从5月开始,到8月结束。谷歌历来严格遵守其开发预览版发布时间表,考虑到这一点,预计Android12会准时到来。
在这里插入图片描述
根据给出的时间轴来看,预计2021年8月最终release版完毕。


全新的统一 API

Android 12 引入了全新的统一 API,您可以从任何可用来源(剪贴板、键盘或拖放操作)接收富媒体内容。

用户喜欢图片、视频和其他富有表现力的内容,但在应用中插入和移动这些内容并非易事。为了使您的应用能够轻松接收富媒体内容,我们引入了全新的统一 API,便于您接受来自任何来源(剪贴板粘贴、键盘输入或拖放操作)的内容。
在这里插入图片描述

新 API 是一个监听器接口,包含一种方法,即 OnReceiveContentListener。您可以向界面组件附加新接口 OnReceiveContentListener,并在通过任何机制插入内容时获得回调。此回调会成为您的代码处理接收所有内容(从纯文本和样式文本到标记、图片、视频、音频文件等)的唯一位置。


媒体

兼容的媒体转码
Android 12 可以自动将设备上录制的 HEVC(H.265) 和 HDR(HDR10 和 HDR10+)视频转码为 AVC (H.264),AVC (H.264) 是与标准播放器广泛兼容的格式。

因此,当新的编解码器可用且不会影响与旧应用的兼容性时,便会利用新的编解码器。

AVIF 图片支持
Android 12 引入了对使用 AV1 图片文件格式 (AVIF) 的图片的支持。AVIF 是一种使用 AV1 编码的图片和图片序列的容器格式。

它利用了视频压缩的帧内编码内容。与以前的图片格式(例如 JPEG)相比,这种格式可显著提升相同文件大小下的图片质量。

从音频产生触感反馈效果
Android 12 应用可使用手机的振动器从音频会话产生触感反馈。这可让您获得更身临其境的游戏和音频体验。

例如,触感反馈效果增强的铃声有助于识别来电者,或者赛车游戏可以模拟在崎岖地形驾驶的感觉。

动画 GIF 和 WebP 的原生 ImageDecoder 支持
在 Android 12 中,NDK ImageDecoder API 已进行了扩展,可以对使用以下文件格式的图片的所有帧和时间数据进行解码:动画 GIF 和动画 WebP 文件格式。

使用 ImageDecoder(而非第三方库)可进一步缩减 APK 大小,并从未来与安全性和性能相关的更新中受益。


UI新特性

Material You
Android 12 带来了 Android 历史上最大的设计变更。我们重新思考了整套体验,包括颜色、形状、光照和动效,使得 Android 12 更具表现力,更鲜活,更个性化。这项工作是在我们的软件、硬件以及 Material Design 团队的深入合作下完成的。我们正在将软件和硬件的生态系统统一在同一种设计语言下,名为 Material You

重新设计的 widget
随着 Android 12 中设计的更新,应用 widget 也已焕然一新,更实用、更美观,且更易于发现。我们增加了新的交互控件,如复选框、开关和单选按钮,并让配置 widget 更轻松。Android 12 widget 与我们的系统 UI 和主题配合起来非常美观,圆角和填充能够自动适应每个启动器和主屏幕。

响应式布局能让您将 widget 适配于手机、平板电脑、可折叠设备和其他屏幕。我们还添加了动态色彩 API,这样您的 widget 就可以使用系统颜色来创建个性化且一致的外观。我们还通过改进的 widget 选择器以及与 Assistant 的整合,使得 widget 更易于发现。

新的交互控件:https://developer.android.google.cn/about/versions/12/features/widgets#new-compound-buttons

配置 widget:https://developer.android.google.cn/about/versions/12/features/widgets#apply-configuration-options

响应式布局:https://developer.android.google.cn/about/versions/12/features/widgets#provide-responsive-layouts

动态色彩 API:https://developer.android.google.cn/about/versions/12/features/widgets#dynamic-colors

示例代码:https://github.com/android/user-interface-samples/tree/main/AppWidget
在这里插入图片描述

过度滚动拉伸
我们还增加了一个新的系统级别的过度滚动 “拉伸” 效果,让用户知道他们已经滚动到了用户界面中内容的末端。拉伸效果提供了自然的垂直和水平滚动停止指示,通用于所有应用,且在整个平台和 AndroidX 的滚动容器中默认启用。新的过度滚动拉伸效果取代了以前版本中的发光效果
https://developer.android.google.cn/about/versions/12/overscroll


性能优化

更流畅的音频过渡
Android 12 还改进了处理音频焦点的方式。当一个应用失去音频焦点时,它的音频会自动淡出,从而在播放音频的应用之间提供一个更平滑的过渡,并防止它们的声音互相重叠。这在可折叠和多屏幕的 Android 环境中尤为重要。https://developer.android.google.cn/about/versions/12/features/audio-focus-improvements

更快、更高效的系统性能
我们将核心系统服务所需的 CPU 时间减少了 22%,因此设备将更快、更灵敏。我们还将系统服务器对大核的使用减少了 15%,从而提高了 Android 的电源效率,使得设备在需要充电之前能运行更长的时间。

应用效能优化
我们通过减少锁争用和延迟的变化程度,改善了应用切换和启动时间。我们还优化了 I/O,以加快应用的加载。在 PackageManager 中,只读快照减少了 92% 的锁争用。在 Binder 中,轻量级缓存从根本上改善了目标调用的延迟,最高可达 47 倍。在 I/O 方面,我们对 dex/odex/vdex 文件进行了加速,以改善应用的加载时间,这在低内存手机上尤为明显。

通知跳转
我们对通知跳转 (notification trampoline) 的限制也有助于减少从通知中启动的应用的延迟。例如,在不使用通知跳转后,Google Photos 应用的启动速度提高了 34%。

数据库优化
为了提高数据库查询性能,我们通过在 Binder 事务中内联结果优化了 CursorWindow。对于小窗口,CursorWindow 的速度提高了 36%,而对于超过 1,000 行的窗口,改进幅度可高达 49 倍。

隐私安全

应用休眠
在 Android 12 中,我们在权限自动重置的基础上,对长时间未使用的应用进行智能休眠,从而优化设备存储、性能和安全。休眠不仅会撤销用户之前授予的权限,而且还会强制停止应用,并回收内存、存储和其他临时资源。系统还会阻止休眠的应用在后台运行作业或接收推送通知,来帮助用户保持安全。

休眠对大多数应用来说应该是透明的,但如果需要,您可以引导用户到设置中关闭您的应用的休眠功能。

附近设备权限
以前,蓝牙扫描要求应用拥有位置权限,这对那些需要与附近设备配对但实际上不需要设备位置的应用是一个挑战。应用现在可以扫描附近的设备,而不需要位置许可。

把 Target SDK 等级升级到 Android 12 的应用可以使用新的 BLUETOOTH_SCAN 权限并设置 usesPermissionFlags=“neverForLocation” 属性进行扫描。在与设备配对后,您可以使用 BLUETOOTH_CONNECT 权限与之互动。这些权限旨在促进隐私友好的应用设计

近似位置
最近几个版本更新,我们为大家提供了更好的方法来管理对位置的访问,比如为前台和后台的访问提供独立的权限,以及 “仅限这一次” 选项。现在,对于针对 Android 12 的应用,我们通过新的 “近似位置” 选项带来了更多的控制权。当应用请求精确位置数据时,用户现在可以选择授予精确或近似的位置。用户在任何时候都可以通过 “设置” 来修改应用的位置精度。

不受信任的触摸事件被屏蔽
为了维持系统安全并保持良好的用户体验,Android 12 会阻止应用使用触摸事件,使用触摸事件时叠加层会以不安全的方式遮掩应用。

换言之,系统会屏蔽穿透某些窗口的触摸操作,但有一些例外情况。

wifi 连接
Android 12 增强了 Wi-Fi 感知功能,可加快数据路径启动,并只需一个网络请求即可实现多个点对点链接。

intent 过滤器
如果您的应用以 Android 12 为目标平台,且包含使用 intent 过滤器的 activity、服务或广播接收器,您必须为这些应用组件显式声明 android:exported 属性。

如果 activity、服务或广播接收器使用 intent 过滤器,并且未显式声明 android:exported 的值,则您的应用将无法在搭载 Android 12 的设备上进行安装。

以下代码段显示了一个服务示例,该服务包含 intent 过滤器并针对 Android 12 进行了正确配置:

<service android:name="com.example.app.backgroundService"
         android:exported="false">
    <intent-filter>
        <action android:name="com.example.app.START_BACKGROUND" />
    </intent-filter>
</service>


优化提升

此外我们还提供了一些新的隐私功能供大家体验,比如近似位置,以及一个名为性能等级 (Performance Class) 的新标准,让应用和用户可以识别高性能设备。

沉浸模式下的手势导航改进
Android 12 简化了沉浸模式,使手势导航更易于操作且与其他活动体验(例如观看视频和阅读图书)更加一致。

WorkManager
Android 12 Beta 版发布时,WorkManager 将成为启动高优先级后台任务的推荐解决方案。

前台服务通知延迟
为了在 Android 12 上提供针对短时间运行的前台服务的流畅体验,系统可以为某些前台服务延迟 10 秒显示前台服务通知。此更改使某些短期任务在显示通知之前完成。

穿戴
今天,我们在可穿戴设备方面向前迈出了一大步。首先,我们推出了一个与三星共同打造的统一平台,结合了 Wear 和 Tizen 的优点。其次,我们推出了全新的用户体验,包括改进的 Google 应用。以及,来自 Fitbit 的世界一流的健康和健身服务也将登录本平台。对 Android 开发者来说,这意味着您的受众将会更加庞大,那些让您的移动应用变得更加出色的所有技能、工具和 API,也能帮助您在针对全世界用户的单一可穿戴设备平台上进行开发。

Netlink MAC 地址的限制
Android 12 进一步限制了所有非系统应用对设备的 MAC 地址(不可重置的标识符)的访问,无论目标 API 级别如何都是如此。

相关 API 会返回空值或占位值,具体取决于应用的目标 SDK 版本:

  • 如果应用以 Android 12 为目标平台,则该 API 会返回 null。
  • 如果应用以 Android 11 或更低版本为目标平台,则该 API 将返回硬编码占位值:02:00:00:00:00:00

adb 备份限制
为了保护私有应用数据,Android 12 变更了 adb backup 命令的默认行为。对于以 Android 12 为目标平台的应用,用户运行 adb backup 命令时,从设备导出的任何其他系统数据都不包含应用数据。

如果您的测试或开发工作流程依赖于使用 adb backup 的应用数据,现在您可以选择通过在应用的清单文件中将 android:debuggable 设置为 true 来导出应用数据。


个性化体验

据谷歌官方介绍,Android 12 包含了 Andro
id 历史上最大的设计变更,从颜色到形状、光线到动画都进行了调整,因此更具有动态感和个性化。

个性化:在 Android 12 中,用户能够使用自定义调色板和重新设计的小部件制定完全个性化的手机,主调颜色的选取将应用于整个操作系统,包括通知栏、锁定屏幕、音量控件、新设计的小部件等。
在这里插入图片描述

流畅的动线及动画:Android 12 的滑动及滚动动画更为顺滑。谷歌还简化了交互过程,重新设计整个基础系统,包括将核心系统服务所需的 CPU 时间减少 22% 等,以使 Android 设备响应速度更快、电源效率更高。

重新设计的系统空间:手机上例如通知栏、快速设置以及电源按钮等重要部分进行了重新设计。


自定义通知变更

Android 12 改变了完全自定义通知的外观。 以前,自定义通知能够使用整个通知区域并提供自己的布局和样式。由此产生的反模式可能会令用户困惑,或在不同设备上引发布局兼容性问题。

对于以 Android 12 为目标平台的应用,包含自定义内容视图的通知将不再使用完整通知区域;相反,系统会应用标准模板。此模板可确保自定义通知在所有状态下都与其他通知相同,例如,在收起状态下的通知图标和展开功能,以及在展开状态下的通知图标、应用名称和收起功能。此行为与 Notification.DecoratedCustomViewStyle 的行为几乎完全相同。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


API 升级影响

如果项目升级匹配到Android 12,那么程序需要修改部分进行相应适配。

重要变更受影响的应用
前台服务启动限制。除少数例外情况,应用再也无法在后台运行时启动前台服务。否则,系统会抛出异常。在后台运行时启动前台服务的应用。
1. 包含 intent 过滤器的应用组件必须声明导出的属性。 2. 包含 intent 过滤器的应用组件必须显式设置 android:exported 属性。 3. 未设置该属性的应用无法安装在 Android 12 上。在清单文件中声明 属性的应用。
以不安全的方式启动嵌套 intent,严格模式测试现在会检测您的应用何时以不安全的方式使用嵌套 intent。启动另一个应用并期望通过内部 intent 回调的应用。

Flutter 2.2

在本次 Google I/O 2021 大会上,我们正式发布了 Flutter 2.2。Flutter 2.2 是我们最新版的开源工具包,可让开发者立足单个平台构建适合任何设备的精美应用。Flutter 2.2 是迄今为止最出色的 Flutter 版本。

Flutter 2.2 侧重于改进开发体验,目的是让您能够向客户提供更稳定、性能更好的应用。