Android 12 首个开发者预览版到来

谷歌开发者 2021-02-26 10:51

作者 / Dave Burke,工程副总裁


从手机和笔记本电脑,再到平板电脑、电视甚至汽车,Android 应用每天都在各种设备上支持着数十亿人的工作、娱乐、交流和创造。当越来越多的人开始依赖您所构建的体验,人们的期望也跟着水涨船高。我们坚信,Android 开发者们的反馈有助于我们为您的应用和所有用户构建一个更好的平台。我们已经发布了 Android 12 (下一代 Android 系统) 的第一个开发者预览版,供您测试和提交反馈。


对于每一个版本,我们都致力于使操作系统更智能、更易用、更强劲,并且始终以隐私和安全为核心。在 Android 12 中,我们还将为您提供新的工具,帮助您为用户打造更出色的体验。首先是兼容媒体转码,即便您的应用尚不支持,这个功能也可以帮助应用使用最新的视频格式。此外,图像和视频等富媒体内容现在可以更轻松地复制/粘贴到您的应用里。我们还将添加隐私保护并优化性能,使您的应用保持及时响应。


首个预览版只是 Android 12 的开始,随着发布的进行,我们会有更多的内容分享给开发者。请继续阅读本文,了解 Android 12 的最新变化,并访问 Android 12 开发者网站,获取有关下载并安装到 Pixel 设备发布时间表的详细信息。与往常一样,尽早获得您的反馈并将其纳入最终产品对我们来说非常重要,因此请务必告诉我们您的想法


  • Android 12 开发者网站
    https://developer.android.google.cn/about/versions/12
  • 下载并安装到 Pixel 设备
    https://developer.android.google.cn/about/versions/12/download
  • 发布时间表
    https://developer.android.google.cn/about/versions/12/overview#timeline
  • 提交反馈
    https://developer.android.google.cn/about/versions/12/feedback


除了我们在 Android 12 中所做的工作之外,我们还发布了另一个重要工具的最新进展,那就是可以帮助您更轻松地创建出色用户体验的 Jetpack Compose,这是我们用于构建原生界面的新一代工具包。欢迎您在评论区留言,告诉我们对 Jetpack Compose 最关切的问题。  


  • Jetpack Compose
    https://developer.android.google.cn/jetpack/compose


信任和安全


隐私是我们一切工作的核心,在 Android 12 中,我们继续专注于为用户提供更多的透明度和控制权,同时保证设备和数据安全。在新版本中我们做出了很多改动,包括对可用于跟踪的标识符增加了新的限制,为应用组件增加了更安全的默认值,等等。这些变更可能会对应用产生影响,因此,我们建议您尽快开始测试。同时,请继续留意将在后续预览版中提供的更多隐私和安全功能。


WebView 中的现代 SameSite cookie 行为 - WebView 顺应 Chrome 和其他浏览器的变化,加入了新的 SameSite cookie 行为,提供额外的安全性和隐私性,让用户对 cookie 跨站点的使用方式拥有更多的透明度和控制权。请访问官方文档了解详细信息。


  • SameSite cookie 变更 (2020 年 2 月)
    https://blog.chromium.org/2020/02/samesite-cookie-changes-in-february.html
  • 官方文档: WebView 中的现代 SameSite cookie 行为
    https://developer.android.google.cn/about/versions/12/behavior-changes-12#samesite


限制使用 Netlink MAC - 我们将继续帮助开发者迁移到保护隐私的可重置标识符。为了在多次版本发布中简化设备级别 Netlink MAC 的迁移,我们在 Android 11 中将这个功能限制在了 API 级别 30。而在 Android 12 中,无论 targetSDK 级别是多少,我们将对所有应用施加这一限制。请访问官方文档了解详细信息。


  • 唯一标识符最佳做法
    https://developer.android.google.cn/training/articles/user-data-ids
  • 官方文档: 受限的 Netlink MAC
    https://developer.android.google.cn/about/versions/12/behavior-changes-all#mac-address


更安全地导出组件 - 为了防止应用意外导出 activity、服务和接收器,我们更改了 android:exported 属性的默认处理方式,使其更加明确。借助这项变更,声明一个或多个 intent 过滤器的组件现在必须显式声明一个 android:exported 属性。您应检查清单文件中的组件,避免与此变更相关的安装错误。请访问官方文档了解详细信息。


  • android:exported
    https://developer.android.google.cn/guide/topics/manifest/activity-element#exported
  • 官方文档: 更安全地导出组件
    https://developer.android.google.cn/about/versions/12/behavior-changes-12#exported

更安全地处理 Intent - 为了使 PendingIntents 的处理更加安全,Android 12 要求应用为每个 PendingIntent 显式声明一个可变性标志,即 FLAG_MUTABLE 或新的 FLAG_IMMUTABLE。请访问官方文档了解详细信息。


  • FLAG_MUTABLE
    https://developer.android.google.cn/reference/android/app/PendingIntent#FLAG_MUTABLE
  • FLAG_IMMUTABLE
    https://developer.android.google.cn/reference/android/app/PendingIntent#FLAG_IMMUTABLE
  • 官方文档: PendingIntent 需要声明可变性
    https://developer.android.google.cn/about/versions/12/behavior-changes-12#pending-intent-mutability


更多的隐私与安全变更:

https://developer.android.google.cn/about/versions/12/behavior-changes-12



更好的用户体验工具


在 Android 12 中,我们在完善体验和改进性能的关键领域持续投入资源。以下是目前的部分进展。


兼容媒体转码 (compatible media transcoding) - 随着 HEVC 硬件编码器在移动设备上的普及,相机应用也多以 HEVC 格式进行拍摄。与旧的编解码器相比,HEVC 在质量和压缩方面都具有明显提升。大多数应用都应支持 HEVC,但对于无法支持 HEVC 的应用,我们引入了兼容媒体转码。


借助此功能,不支持 HEVC 的应用可以让平台自动将文件转码为广泛兼容的 AVC 格式。转码过程需要一定时间,具体取决于视频的内容和设备的硬件属性。例如,30fps 的一分钟 1080p 视频在 Pixel 4 上转码需要 9 秒左右。您可以通过声明应用不支持的媒体格式来选择使用转码服务。我们强烈建议开发者使应用支持 HEVC,如果无法支持,再启用兼容媒体转码。该功能将在所有使用 HEVC 格式进行视频拍摄的设备上启用。我们希望听到您对此功能的反馈。请访问官方文档了解详细信息。


  • 官方文档: 兼容媒体转码
    https://developer.android.google.cn/about/versions/12/features/compatible-media-transcoding


AVIF 图像支持 - Android 12 引入了对 AV1 图像文件格式 (AVIF) 的平台支持,提供更高的图像质量和更高效的压缩。AVIF 是一种使用 AV1 编码的图像和图像序列的容器格式。与其他现代图像格式一样,AVIF 利用了视频压缩的帧内编码内容。相较于旧的图像格式 (如 JPEG),在相同的文件大小下,AVIF 可以极大地提高图像质量。

△ 上图: AVIF (18.2kB);下图: JPEG (20.7kB)

图源:《AVIF 已经到来》中的图像对比,作者 Jake Archibald
  • AV1 图像文件格式
    https://en.wikipedia.org/wiki/AV1#AV1_Image_File_Format_(AVIF)
  • AV1
    https://en.wikipedia.org/wiki/AV1
  • AVIF 已经到来
    https://jakearchibald.com/2020/avif-has-landed/
  • 图像对比
    https://jakearchibald.com/2020/avif-has-landed/demos/compare/?show=f1&img=/c/f1-match-ff75e344.jpg


前台服务优化 - 前台服务是应用管理某些面向用户任务的重要方式,但过度使用会影响性能,甚至导致应用被系统终止。为了确保用户获得更好的体验,对于以新平台为目标的应用,我们将阻止从后台启动前台服务。为了帮助大家更轻松地摆脱这种做法,我们在 JobScheduler 中引入了一个新的加急作业 (expedited job),该作业具有较高的进程优先级、网络访问权限,并且立即运行,不受省电模式 (Battery Saver) 或低电耗模式 (Doze) 等电耗约束的影响。为了实现向下兼容,我们还将加急作业集成到了最新版本的 Jetpack WorkManager 库中。另外,为了减轻对用户的干扰,我们现在将部分前台服务通知的显示延迟了最多 10 秒。这使短暂的任务有机会在通知显示之前完成。请访问官方文档了解详细信息。


  • 加急作业
    https://developer.android.google.cn/reference/android/app/job/JobParameters.html#isExpeditedJob()
  • Jetpack WorkManager
    https://developer.android.google.cn/topic/libraries/architecture/workmanager
  • 官方文档: 前台服务启动限制
    https://developer.android.google.cn/about/versions/12/behavior-changes-12#foreground-service-launch-restrictions


富内容插入 (rich content insertion) - 用户喜欢看图像、视频和其他富有表现力的内容,但在应用中插入和移动这些内容并不总是那么容易。为了让您的应用能够快速接收富内容,我们引入了一个新的统一 API,让您能够接受任何来源的内容: 剪贴板、键盘或拖放。您可以将新接口 OnReceiveContentListener 附加到界面组件上,并在通过任何机制插入内容时获得回调。此回调将成为代码处理所有内容插入的唯一位置,从纯文本和样式文本到标记、图像、视频、音频文件等。为了实现向下兼容,我们已将统一的 API 加入了 AndroidX。请访问官方文档了解详细信息。


  • OnReceiveContentListener
    https://developer.android.google.cn/reference/android/view/OnReceiveContentListener
  • OnReceiveContentListener (AndroidX)
    https://developer.android.google.cn/reference/androidx/core/view/OnReceiveContentListener
  • 官方文档: 接收内容的统一 API
    https://developer.android.google.cn/about/versions/12/features/unified-content-api


音频耦合触感效果 (audio-coupled haptic effect) - 在 Android 12 中,应用可以通过手机的振动单元提供音频耦合触感反馈。振动强度和频率来自于音频会话,让您可以创建更沉浸的游戏和音频体验。例如,视频通话应用可以使用自定义铃声,通过触感反馈识别来电者,您还可以在赛车游戏中模拟崎岖地貌。请访问官方文档了解详细信息。


  • 官方文档: HapticGenerator
    https://developer.android.google.cn/reference/android/media/audiofx/HapticGenerator


多声道音频 - Android 12 为包含空间信息的音频带来了多项增强。添加了对 MPEG-H 透传 (passthrough) 和分载 (offload) 模式的播放支持,音频混音器、重采样器和效果经过优化,支持多达 24 个通道 (过去最大仅支持 8 个)。


手势导航的沉浸模式 API 改进 - 我们简化了沉浸模式,使手势导航在多种场景下,如观看视频、阅读书籍或玩游戏时,更简单、更连贯。在游戏相关的全屏体验中,我们仍然会保护应用不受意外手势的影响,但在所有其他全屏或沉浸式体验中 (如视频播放器、阅读、图册),对于针对新平台的应用,我们将改变默认设置,允许用户通过单次滑动来进行导航。请访问官方文档了解详细信息。


  • 确保应用不受意外手势影响
    https://developer.android.google.cn/reference/android/view/WindowInsetsController#BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
  • 官方文档: 沉浸模式改进
    https://developer.android.google.cn/about/versions/12/behavior-changes-12#immersive-mode-improvements


通知界面更新 - 我们对通知设计进行改版,使其更现代、更易用、更实用。在首个预览版中,您可以发现从抽屉式导航栏和控件到模板本身都有所变化。我们还优化了整个系统的转场和动画,使其更加流畅。作为更新的一部分,对于针对 Android 12 的应用,我们会使用自定义内容、图标以及展开提示来对通知进行美化,从而使其观感与其他通知一致。请访问官方文档了解详细信息。


  • 官方文档: 自定义通知变更
    http://developer.android.google.cn/about/versions/12/behavior-changes-12#custom-notifications


更快、更灵敏的通知 - 用户点按通知时,期望的是立即跳转到应用,越快越好。为了满足这一期望,开发者需确保点击通知应直接触发 Activity 启动,而不是使用 "蹦床" (通过广播接收器或服务) 启动 Activity。通知蹦床会造成明显的延迟,影响用户体验。为了保持通知的响应速度,Android 12 将阻止通知蹦床启动目标 Activity,我们也要求开发者不再使用这种实践模式。此项变更仅适用于针对新平台的应用,但对于所有应用,我们都会显示消息框,使您和用户可以看到蹦床。请访问官方文档了解详细信息。


  • 官方文档: 通知蹦床不可由服务或广播接收器创建
    https://developer.android.google.cn/about/versions/12/behavior-changes-12#notification-trampolines


改进的 Binder IPC 调用 - 在提升性能方面,我们关注如何降低系统可变性。经过对延迟和工作负载分布的深入观察,我们做出优化,减少了末端的中位数体验 (或 99% 的用例)。在此期间,我们有针对性地改进了系统绑定调用,增加了轻量级缓存策略,并专注于消除锁争用以改善延迟分布。这样一来,Binder 调用整体性能提升约 2 倍,特定调用的性能提升显著,如 refContentProvider() 提升了 47 倍、releaseWakeLock() 提升了 15 倍、JobScheduler.schedule() 提升了 7.9 倍。



应用兼容性


发布新的平台版本时,我们优先考虑应用的兼容性,让系统更新的体验更快、更顺畅。在 Android 12 中,大多数面向应用的变更都是可选的,以便您有更多时间调整适应。我们还更新了工具和流程,帮助您更快做好准备。我们还为 Google Play 系统更新添加了新功能,在 Android 12 设备上为您的应用提供更好的运行环境。


通过 Google Play 进行更多的 Android 更新 - 我们将继续扩大对 Google Play 系统更新 (Project Mainline) 的投入,为各设备上的应用营造更一致、更安全的环境。Android 12 新增了 Android Runtime (ART) 模块,支持向 Android 12 设备的核心运行时和库推送更新。我们可以提高运行时的性能和正确性,更有效地管理内存,并使 Kotlin 操作更为迅速 —— 这些都不再需要完整的系统更新。我们还扩展了现有模块的功能,例如,我们在一个可更新模块中提供了兼容媒体转码功能。


  • 通过 Project Treble 和 Mainline 及时更新操作系统
    https://android-developers.googleblog.com/2019/05/fresher-os-with-projects-treble-and-mainline.html


针对平板电脑、可折叠设备和电视的优化 - 随着越来越多的人开始在可折叠设备、平板电脑和电视等大屏幕设备上使用应用,现在是确保您的应用或游戏为这些设备做好准备的大好时机。您可以从针对平板电脑进行优化为可折叠设备构建应用开始着手。同时,针对家庭中最大的屏幕,首个适用于 Android TV 的 Android 12 预览版也已推出。您不仅可以通过此预览版将最新的 Android 功能带到电视,还可以在全新的 Google TV 环境测试您的应用。请前往 Android TV 开发者网站了解更多信息并使用 ADT-3 开发者工具包上手开发。


  • 平板电脑应用质量
    https://developer.android.google.cn/docs/quality-guidelines/tablet-app-quality
  • 为可折叠设备构建应用
    https://developer.android.google.cn/guide/topics/ui/foldables
  • Android TV 开发者网站
    https://developer.android.google.cn/tv
  • ADT-3 开发者工具包
    https://store.askey.com/adt-3.html


非 SDK 接口列表更新 - 我们增加了受限制的非 SDK 接口,和往常一样,我们期待着您的反馈,也欢迎您提出公开 API 的需求


  • 非 SDK 接口
    https://developer.android.google.cn/about/versions/12/non-sdk-12
  • 提交公开 API 需求
    https://developer.android.google.cn/guide/app-compatibility/restrictions-non-sdk-interfaces#feature-request


更轻松地针对变更进行测试和调试 - 为了让您更轻松地测试会影响应用的可选变更,我们已经将许多变更设置为可开关。您可以在开发者选项或 adb 中通过这些开关逐一强制启用或停用这些变更。请访问官方文档了解详细信息。


  • 官方文档: 兼容框架变更
    https://developer.android.google.cn/about/versions/12/reference/compat-framework-changes
△ 开发者选项中的应用兼容性切换开关

平台稳定性里程碑 - 和去年一样,我们会提前告知我们的平台稳定性里程碑,让您有更多的时间规划应用兼容性工作。在此里程碑,我们不仅会锁定最终版的 SDK/NDK API,还会锁定最终内部 API 和面向应用的系统行为。我们预计将在 2021 年 8 月抵达平台稳定性里程碑。这样在正式发布前,您将有几周的时间进行最终测试。发布时间表详见: 

https://developer.android.google.cn/about/versions/12/overview



即刻开始体验 Android 12


不论您想体验 Android 12 的功能、测试应用还是提交反馈,都可以从这次的开发者预览版开始。只需将设备系统映像下载并刷入 Pixel 3 / 3 XLPixel 3a / 3a XLPixel 4 / 4 XLPixel 4a / 4a 5GPixel 5 设备,即可立即开始使用。如果您没有 Pixel 设备,可以将 64 位系统映像刷入 Android Studio 中的 Android Emulator 使用。


  • 分享使用反馈
    https://developer.android.google.cn/about/versions/12/feedback
  • 获取系统映像
    https://developer.android.google.cn/about/versions/12/download


设置完毕后,您可以:
  • 体验新功能和 API - 在开发者预览版的早期阶段,您的反馈至关重要。您可以在我们的跟踪页报告问题,也可以前往反馈和需求页面,通过特定功能的调查问卷提供直接反馈。
  • 测试您现有应用的兼容性 - 这是为了了解您的应用是否受到 Android 12 中默认行为变更的影响。您只需要将当前发布的应用安装到运行 Android 12 的设备或模拟器上并开始测试即可。
  • 使用可选变更项测试您的应用 - Android 12 拥有可选的行为变更,这些变更仅在您的应用以新平台为目标时才会造成影响。尽早了解和评估这些变更非常重要。为了更易于测试,您可以单独启用或禁用这些变更


  • 设置 Android 12 SDK
    https://developer.android.google.cn/about/versions/12/setup-sdk
  • 反馈与需求
    https://developer.android.google.cn/about/versions/12/feedback
  • 兼容框架变更
    https://developer.android.google.cn/about/versions/12/reference/compat-framework-changes


我们将在整个 Android 12 发布周期内定期更新预览版系统映像和 SDK。这次发布的初始预览版仅供开发者使用,不面向日常或消费者使用,因此我们仅提供手动下载。您可以将系统映像刷入 Pixel 设备,或在运行 Android 11 的设备上加载 (sideload) OTA 映像,在后一情况下您甚至不需要解锁引导加载程序 (bootloader) 或擦除数据。而无论使用哪种方式,在手动安装预览版本后,您都将能够通过无线方式自动获取未来所有后续预览版和 Beta 版更新。请访问官方文档了解详细信息。


  • 官方文档: 获取 Android 12
    https://developer.android.google.cn/about/versions/12/get


当我们接近最终产品时,我们也将邀请消费者试用,届时将开放 Android Beta 注册。敬请关注后续信息,但目前 Android 12 尚未提供 Beta 版本

了解本次发布的完整信息,请访问 Android 12 开发者网站
https://developer.android.google.cn/about/versions/12

即刻体验 Android 12 的最新特性!点击屏末  | 分享您的使用反馈。



推荐阅读