查看原文
其他

更上一层楼: Android 11 首个开发者预览版到来

Android 谷歌开发者 2020-09-20
作者 / Dave Burke, VP of Engineering


Android 通过 5G、折叠屏、内置机器学习等新技术,照亮了移动设备的未来。而在这背后,我们也越来越清楚地看到,一个强大的开发者社区有多么重要。这个社区为我们提供及时、全面的反馈,帮助我们打造出强大的平台,从而让开发者们的应用和游戏得以吸引全球数十亿用户。今天,我们发布了 Android 11 的开发者预览版,有了去年打下的基础,今年的预览版得以更早地与大家见面。

Android 11 依然致力于让用户畅享最新科技,并始终确保将安全和隐私放在首位。我们加入了多个新功能,帮助用户管理敏感数据和文件的访问权限,此外还对平台的关键区域做出了强化,以保持操作系统的弹性和安全性。对开发者来说,Android 11 为您的应用提供了许多新功能,例如针对可折叠设备和 5G 设备的增强功能、来电过滤 API、全新的媒体和摄像头功能、机器学习等等。

这还仅仅只是开始。与往年一样,我们将在接下来的几个月中继续分享新功能和更新,持续关注并处理来自社区的反馈,然后和大家一起迎接 Google I/O。您现在要做的、也是最重要的事情是: 访问 Android 11 开发者网站,下载适用于 Pixel 2 / 3 / 3a / 4 设备的系统映像,开始体验这个全新的版本,并把您的想法反馈给我们。


  • Android 11 开发者网站
    https://developer.android.google.cn/11
  • 系统映像
    https://developer.android.google.cn/preview/download


今天发布的仅是针对开发者的早期基准版本,并不面向日常使用,所以我们只提供手动下载和刷新的安装方式。我们非常期待尽早听到您的反馈,这有助于我们进一步推进平台的开发,以及满足您的需求。在本文中,我们将为您介绍 Android 11 带来的新功能。您还可以访问开发者网站了解发布日程测试方法,以及如何提供反馈等详细信息。


  • 发布日程

    https://developer.android.google.cn/preview/overview#timeline

  • 测试方法

    https://developer.android.google.cn/preview/migration

  • 提供反馈

    https://developer.android.google.cn/preview/feedback



实用创新


5G 体验

5G 正为全球更多用户带来更快的速度和更低的延迟。借助 5G,您可以将 Wi-Fi 应用体验带给移动用户——例如 4K 视频直播或加载更高分辨率的游戏素材,您还可以针对 5G 设计构建全新的体验。在 Android 11 中,我们正在增强和更新现有的网络连接 API,方便您使用 5G 特有的高速连接。

  • 动态计费状态 API - 您可以使用此 API 查看连接是否处于非计费状态。如果是非计费状态的话,则可以提供更高的分辨率或图像质量 (这些都需要更多的数据量)。我们已将 API 扩展到蜂窝网络,如果用户连接进运营商的 5G 网络时可享有真正不计流量的数据服务,您能识别出这样的状态。 

  • 带宽估测 API - 我们针对 5G 更新了 API,现在可以轻松查看上行 / 下行带宽,不再需要通过获取网络信息来自行估算。如果调制解调器不支持此功能,我们则会根据当前的连接进行默认估算。


  • 现有的网络连接 API
    https://developer.android.google.cn/reference/android/net/ConnectivityManager
  • 识别非计费状态
    https://developer.android.google.cn/reference/android/net/NetworkCapabilities.html#NET_CAPABILITY_NOT_METERED
  • 查看上行 / 下行带宽
    https://developer.android.google.cn/reference/android/net/NetworkCapabilities.html#getLinkDownstreamBandwidthKbps()

△ 将高速体验带出家门,5G 可以让您的随行移动体验更加流畅,让您随时与周边环境、朋友、家人互动并满足工作的需要

新的屏幕类型

设备厂商们也在持续进行创新,将新的设备规格和屏幕形态投入市场。我们已经在平台中扩展了对这些创新设备的支持,并提供了相应的 API 方便您来优化应用。

  • 挖孔屏幕和瀑布屏幕 - 应用可以使用现有的凹口屏 API 来管理挖孔屏幕和瀑布屏幕。还有新的 API 可以让您的应用使用包括边缘在内的整个瀑布屏幕,并通过边衬区 (insets) 来管理边缘附近的互动。

  • 凹口屏 API
    https://developer.android.google.cn/guide/topics/display-cutout
  • 新的屏幕管理 API
    https://developer.android.google.cn/reference/android/view/WindowManager.LayoutParams.html#LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS
  • 边衬区
    https://developer.android.google.cn/reference/android/view/DisplayCutout.html#getWaterfallInsets()

沟通互动

与好友和同事沟通仍然是许多用户在手机上最重要的操作。在 Android 11 中,我们将提供一些新方法以便开发者能实现更深入的沟通体验。在 DP1 中,您可以看到其中一些方法的早期实现:

  • 通知栏中的对话专区 - 用户可以更方便地找到常用 IM 工具中正在进行的对话。
  • 气泡 - 气泡可以让用户在手机上多任务切换时依然保持对话可见以及可用。消息和聊天应用可以通过基于通知的 Bubbles API,在 Android 11 上提供这种全新体验。
  • 在通知回复中插入图像 - 如果您的应用支持图像复制 / 粘贴,那么您现在可以让用户将内容直接插入到通知内嵌的回复栏中,从而在应用内外都实现更丰富的交流体验。作为 DP1 的一部分,您可以在 Chrome 中进行图像复制,以及通过 Gboard 剪贴板粘贴图像。

实时、双向沟通应用请使用分享 / 对话快捷方式 API ,并指明聊天对象,这样 Android 便可以更清楚地显示出基于聊天对象的快捷操作;另外也请使用 Bubbles API,以便允许用户在使用设备的其他功能时进行对话。


  • Bubbles API 

    https://developer.android.google.cn/guide/topics/ui/bubbles

  • 在快捷方式中指明聊天对象

    https://developer.android.google.cn/reference/androidx/core/content/pm/ShortcutInfoCompat.Builder.html#setPerson(androidx.core.app.Person)


Neural Networks API 1.3

Neural Networks API (NNAPI) 用于在 Android 设备的机器学习中运行计算密集型操作。在 Android 11 上,我们将继续扩展开发者可以使用的算子和控制。在今天发布的预览版中,我们添加了新的算子和运行控制,用来优化常见的使用场景:

  • 服务质量 API 支持设置模型执行的优先级和超时。
  • Memory Domain API 减少了用于连续模型执行时的内存复制和转换。
  • 扩大量化支持,我们增加了对有符号整数非对称量化的支持,该算法使用有符号整数代替浮点数,以实现更小的模型和更快的推断。

我们在 NDK 样例代码中展示了如何使用这些新的 API。

请继续关注后续的预览版更新。我们正在与硬件供应商和流行的机器学习框架 (如 TensorFlow) 合作,以优化并推出对 NNAPI 1.3 的支持。


  • 有符号整数非对称量化

    https://www.tensorflow.org/lite/performance/quantization_spec

  • NDK 样例代码

    https://github.com/android/ndk-samples/tree/master/nn-samples/



隐私和安全


隐私

隐私保护一直是 Android 系统的重要核心。每年我们都会加入更多方法来保护用户安全,并为他们提高透明度和控制力。这些更改深受用户欢迎——例如,在 Android 10 中,我们添加了 “使用该应用时” 的权限选项,让用户可以更精细地控制自己的位置信息,并限制后台对这个信息的访问。现在,每当系统给出 “使用该应用时” 选项时,都会有大约一半的用户选择它。

在 Android 11 中我们继续关注用户的隐私,包括提供新的权限选项,更新分区存储,等等。请大家通过自己的应用尝试使用这些功能,并将反馈分享给我们。

  • 单次权限 - 对于最敏感的数据类型,包括位置信息、设备的麦克风和摄像头,用户现在可以授予单次的临时访问权限。这个权限意味着应用可以访问数据,直到用户离开应用为止,此后,应用必须再次请求权限,才能进行下一次访问。请前往开发者网站了解详情

△ Android 11 的单次权限对话框

  • 分区存储 - 我们一直在努力更好地保护外部存储上的应用和用户数据,加入了更多的改进以便让开发者更轻松地进行过渡。这里我们要感谢 Android 社区中提出这些宝贵反馈的每一位开发者,是大家的分享让我们得以打造更好的平台!本次预览版中的改进包括可选的媒体原始文件路径访问、更新过的 DocumentsUI、MediaStore 中的批量编辑操作。在这些技术更新之外,我们还根据大家的反馈,为大家准备了更充足的时间针对 Android 11 进行迁移和做出修改。请前往开发者网站了解详情,并请继续关注后续这方面的更新。

  • 单次权限详情
    https://developer.android.google.cn/preview/privacy/permissions
  • 分区存储详情
    https://developer.android.google.cn/preview/privacy/storage

除了以上提及的系统变更外,用户还告诉我们,他们希望在更早版本的 Android 上也获得更多保护,以及提供关于应用如何使用这些数据的透明度。为此,我们正在更新 Google Play 政策,以确保应用只在其真正需要获取位置信息时才请求授权。您可以前往开发者网站了解更多


  • 了解更多
    https://android-developers.googleblog.com/2020/02/safer-location-access.html


安全

对于每个版本的 Android,提高安全标准始终是头等大事——从通过月度安全性更新扩大设备覆盖面,到在最新平台中构建更多保护措施等等。在 Android 11 中,我们将 Android 的纵深防御策略扩展到了平台内的更多区域,并为应用提供了新功能和新 API。

  • 生物验证 - 我们已经扩展了生物验证的支持,以满足各种设备的需求。BiometricPrompt 现在支持三种不同颗粒度级别的身份验证类型: 强、弱和设备凭据。我们还将 BiometricPrompt 流程与应用的 Activity 生命周期解耦,从而使其更易于与各种应用架构集成,并改善特定交易的交互界面。所有使用生物验证的应用都应迁移至 BiometricPrompt API,AndroidX 中也提供了这些 API,以帮助应用适配早期版本的 Android 系统。
  • 平台强化 - 我们已在安全性关键组件 (包括 BoundSan、IntSan、CFI 和 Shadow-Call Stack) 中扩展了基于编译器的清理器的使用。我们还为目标为 Android 11 或更高版本的应用启用了堆指针标记,以帮助应用捕获生产中的内存问题。这些强化改进措施也许能帮助您捕获更多可重复/可复现的导致应用崩溃的代码,所以请尽早测试您的应用。我们使用 HWAsan 定位和修复了许多系统内存错误,现在我们提供启用了 HWAsan 的系统映像来帮助您查找自己应用中的问题。
  • 安全存储与数据共享 - 应用现在可以通过 BlobStoreManager 与其他应用更轻松、安全地共享二进制大型数据对象 (Blob)。Blob 存储适合的场景很多,比如在同一用户的多个应用之间共享 ML 模型。
  • 身份认证信息 - Android 11 添加了平台支持,用于安全存储和检索可验证的身份证明文件,例如符合 ISO 18013-5 的机动车驾驶执照。我们近期会为大家带来更详细的说明。


  • 身份验证类型

    https://developer.android.google.cn/reference/android/hardware/biometrics/BiometricManager.Authenticators.html

  • AndroidX 中的 BiometricPrompt

    https://developer.android.google.cn/reference/androidx/biometric/BiometricPrompt

  • 堆指针标记

    https://source.android.com/devices/tech/debug/tagged-pointers

  • HWAsan

    https://source.android.com/devices/tech/debug/hwasan

  • 启用了 HWAsan 的系统映像

    https://android-developers.googleblog.com/2020/02/detecting-memory-corruption-bugs-with-hwasan.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+blogspot/hsDu+(Android+Developers+Blog)&m=1

  • BlobStoreManager 

    https://developer.android.google.cn/reference/android/app/blob/BlobStoreManager



更新与兼容性


Google Play 系统更新

自 Android 10 起,我们一直在扩大对 Google Play 系统更新 (Project Mainline) 的投入,帮助推动整个生态系统的安全性、隐私性和一致性。得益于设备制造商伙伴的紧密合作,我们取得了重大进展,并且扩展了基础架构,可以更快速且安全地覆盖更多设备。

在 Android 11 中,我们新增了 12 个新的可更新模块,这样模块总数达到了 22 个。这里列举一些亮点: 一个用于在 Android 设备中为用户和开发者提供标准的关键隐私控件的权限模块;一个在分区存储的隐私特性中至关重要的媒体提供模块;一个用于跨设备优化性能及确保 API 一致的 NNAPI 模块。想要进一步了解 Google Play 系统更新,请移步 Project Mainline 博文了解更多。

  • Project Mainline 博文
    https://android-developers.googleblog.com/2019/05/fresher-os-with-projects-treble-and-mainline.html


应用兼容性

在推出新平台版本时,我们还通过优先考虑应用兼容性来努力使更新更快速、更顺畅。在 Android 11 中,我们添加了新的流程、开发者工具以及发布里程碑,以帮助我们最大程度地减少平台更新带来的影响。

  • 最大限度地降低行为变更影响 - 虽然我们对 Android 做出的改进会让系统更实用、安全和高效,但其中一些改动会影响到开发者的应用。在开发 Android 11 的过程中,我们密切关注并努力抑制行为变更带来的影响,并尽可能地将这些变更设置为可选项——只有当您将应用的 targetSdkVersion 设为 Android 11 时才会受到这些影响。我们希望这些努力能为开发者带来更多的控制权,并确保更多的应用在 Android 11 中处于开箱即用的状态。
  • 更轻松的测试和调试 -为了帮助您测试兼容性,我们将许多非兼容性变更设置为  “可关闭”。这意味着,您可以通过开发者选项或 adb 强制启用或禁用这些更改。这样就无需为了一些基本测试而更改 targetSdkVersion 或重新编译您的应用。您可以查看开发者网站了解更多信息
△ 开发者选项中的应用兼容性开关
  • 灰名单更新 - 我们已经更新了受限制的非 SDK 接口列表。一如既往,欢迎您提出反馈,并发出公共 API 替代品的开发需求
  • 动态资源加载器 - 在开发者们移除非 SDK 接口调用的同时,我们听到了来自开发者们的一个需求: 提供一个公开 API 来在运行时动态加载资源和素材。现在,我们在 Android 11 中添加了 Resource Loader 框架,感谢向我们提出这些需求的开发者!
  • 新的平台稳定性里程碑 - 开发者还告诉我们,如果没有明确的最终更改日期,那么为早期应用兼容性做准备是相当困难的。因此,在 Android 11 中,我们添加了一个新的名为 “平台稳定性” 的里程碑,预计将在 6 月初达成。这个里程碑不仅包括最终的 SDK/NDK API,还包括最终的内部 API 和会影响到应用的系统行为。我们希望您可以使用这个新的里程碑来安排您的最终开发和测试日程。更多发布日程的详细信息请查看开发者网站

  • 了解更多

    https://developer.android.google.cn/preview/test-changes

  • 受限制的非 SDK 接口列表 

    https://developer.android.google.cn/preview/non-sdk-11

  • 发出公共 API 替代品的开发需求 

    https://developer.android.google.cn/distribute/best-practices/develop/restrictions-non-sdk-interfaces#feature-request

  • Resource Loader 框架 

    https://developer.android.google.cn/reference/android/content/res/loader/package-summary.html

  • 发布日程

    https://developer.android.google.cn/preview/overview



优化与品质


网络连接

  • 改进呼叫过滤服务 - 呼叫过滤应用现在可以为用户提供更多助力。应用在呼叫详细信息中可以获取来电的 STIR/SHAKEN 验证状态。应用还可以自定义系统提供的呼叫后屏幕 (post call screen),方便用户执行诸如 “将呼叫方标记为骚扰电话” 或 “添加到联系人” 之类的操作。
  • 增强 Wi-Fi 建议 API - 我们扩展了 Wi-Fi 建议 API,以使连接管理应用在管理网络时拥有更强大的能力。例如,它们可以通过删除网络建议来强制断开连接,管理 Passpoint 网络,获取已连接网络的更多质量信息,以及其他管理功能的更改。
  • 增强 Passpoint 功能 - Android 现在会遵守 Passpoint 配置文件的到期日期,并会发出通知 。支持该配置文件中的 Common Name 规范,并允许 Passpoint R1 配置文件使用自签名的私有 CA。连接管理应用可以使用 Wi-Fi 建议 API 来管理 Passpoint 网络

  • 验证状态 
    https://developer.android.google.cn/reference/android/telecom/Call.Details.html#getCallerNumberVerificationStatus()
  • 呼叫后屏幕 
    https://developer.android.google.cn/reference/android/telecom/TelecomManager.html#ACTION_POST_CALL 
  • Wi-Fi 建议 API 
    https://developer.android.google.cn/guide/topics/connectivity/wifi-suggest 
  • 使用 Wi-Fi 建议 API 来管理 Passpoint 网络 
    https://developer.android.google.cn/reference/android/net/wifi/WifiNetworkSuggestion.Builder.html#setPasspointConfig(android.net.wifi.hotspot2.PasspointConfiguration)

图像与摄像头改进

  • HEIF 动画可绘制对象 - ImageDecoder API 现在允许您解码和渲染存储在 HEIF 文件中的图像序列动画,方便您引入高品质的素材,同时最大程度地减少对网络数据和 apk 尺寸的影响。相对于 GIF 动画,HEIF 图像序列可以显著减小文件尺寸。通过在应用中调用 decodeDrawable 和一个 HEIF 资源,开发者即可在应用中呈现 HEIF 图像序列。当资源中包含图像序列时,会返回一个 AnimatedImageDrawable
  • 原生图像解码器 - 应用可以使用新的 NDK API 来通过原生代码解码和编码图像 (JPEG、PNG、WebP),以便进行图形或后期处理,而且因为您无需捆绑外部代码库,从而依然得以保持较小的 APK 尺寸。原生解码器还可以从 Android 持续的平台安全更新中获益。我们提供了 NDK 样例代码作为使用参考。
  • 在摄像头拍摄时静音 - 在会话处于活动状态时,应用可以使用新的 API 来关闭铃声、提醒或通知时的振动。
  • 散景模式 - 在支持该功能的设备上,应用可以使用元数据标签让摄像头启用散景模式进行拍摄。静止图像模式可以提供最高质量的拍摄,而连续拍摄模式可以确保拍摄与传感器输出 (例如视频拍摄) 保持同步。


  • ImageDecoder API
    https://developer.android.google.cn/reference/android/graphics/ImageDecoder
  • 和 GIF 动画的对比
    https://nokiatech.github.io/heif/comparison.html
  • decodeDrawable
    https://developer.android.google.cn/reference/android/graphics/ImageDecoder.html?hl=en#decodeDrawable(android.graphics.ImageDecoder.Source) 
  • AnimatedImageDrawable
    https://developer.android.google.cn/reference/android/graphics/drawable/AnimatedImageDrawable.html
  • NDK API
    https://developer.android.google.cn/ndk/guides/image-decoder
  • NDK 样例代码
    https://github.com/android/ndk-samples/tree/master/teapots/image-decoder

低延迟
  • MediaCodec 中的低延迟视频解码 - 低延迟视频对于实时视频串流应用和 Stadia 等服务至关重要。支持低延迟播放的视频编解码器会在解码开始后尽快返回流的第一帧。应用可以使用新 API 来针对特定编解码器检查配置低延迟播放。
  • HDMI 低延迟模式 - 应用可以使用新的 API 在外部显示器和电视上进行检查,并请求使用自动低延迟模式 (也称为游戏模式)。在该模式下,显示器或电视会禁用图形后处理,以最大程度地减少延迟。


  • Stadia

    https://stadia.google.com/

  • 检查编解码器功能

    https://developer.android.google.cn/reference/android/media/MediaCodecInfo.CodecCapabilities#isFeatureSupported(java.lang.String)

  • 配置编解码器低延迟功能

    https://developer.android.google.cn/reference/android/media/MediaCodec.html#PARAMETER_KEY_LOW_LATENCY



即刻开始体验 Android 11


不论是想体验 Android 11 的功能、测试应用还是和我们分享您的反馈,都可以从这次的开发者预览版开始。您现在可以下载并在 Pixel 2 / 2 XL、Pixel 3 / 3 XL、Pixel 3a / 3a XL 或者 Pixel 4 / 4 XL 设备上刷入系统映像。另外,您还可以在 Android Studio 里设置 Android 模拟器。运行 Android 11 映像的 Android 模拟器包含直接在 64 位 x86 Android 模拟器系统映像上运行 ARM 32 位和 64 位二进制应用代码的实验性支持。最后,针对更广泛的测试,GSI 映像现在也已经可以获取。


  • 分享使用反馈

    https://issuetracker.google.com/issues/new?component=190602&template=1407746

  • 获取系统映像

    https://developer.android.google.cn/preview/download.html

  • GSI 映像

    https://developer.android.google.cn/preview/gsi-release-notes


接下来,使用 Android 11 预览 SDK 以及工具升级您的 Android Studio 环境——您在 Android Studio 里即可完成这些操作。请查看设置说明进一步了解如何操作。想要体验 Android Studio 最新的功能,我们建议从 Canary 渠道获取并安装最新版本的 Android Studio。

  • 设置说明
    https://developer.android.google.cn/preview/setup-sdk
  • Canary 渠道
    https://developer.android.google.cn/studio/preview


做好上述准备后,您可以着手进行这些事情:

  • 体验新功能和 API - 在开发预览早期,您的反馈至关重要。我们会积极关注您针对新 API 的反馈,这样也能让我们有充足的时间做出修改。想了解这方面的详细信息,请移步 API 概览API 文档变化说明。别忘了尽快向我们分享反馈和建议
  • 测试您现有应用的兼容性 - 这里的目的是了解 Android 11 默认的行为变更有没有影响到您的应用。只需将您目前已发布的应用安装到真机或模拟器里并测试应用的完整流程即可。如果您发现了问题,我们建议尽快更新您的应用。
  • 使用可选变更项测试您的应用 - 和以往的发布一样,Android 11 也包含可选的行为变更,它们只会在您的应用针对新平台发布时才会造成影响。尽早了解并评估这些变化十分重要。您可以逐一打开或关闭这些变化项目,从而更轻松地评估它们的影响。在您进行测试时,也请和我们分享这些变化对您的应用造成的影响。

  • API 概览

    https://developer.android.google.cn/preview/features

  • API文档

    https://developer.android.google.cn/reference/packages

  • 变化说明

    https://developer.android.google.cn/sdk/api_diff/r-dp1/changes.html

  • 分享反馈和建议

    https://issuetracker.google.com/issues/new?component=190602&template=1407746

  • 打开或关闭变化项目

    https://developer.android.google.cn/preview/test-changes

  • 分享反馈

    https://developer.android.google.cn/preview/feedback


想了解更多信息,请移步 Android 11 开发者网站。那里为您准备了这次发布的新增内容概览、行为变更细节、设置和迁移说明、发布日志、反馈渠道等丰富的内容。

  • Android 11 开发者网站
    https://developer.android.google.cn/preview


预览更新


我们会在 Android 11 的发布周期里定期更新系统映像和 SDK。今天的初始发布只面向开发者,并不面向日常使用,所以我们只提供手动下载和刷新的安装方式。请从开发者网站下载并进行安装


  • 下载
    https://developer.android.google.cn/preview/download
  • 安装
    https://developer.android.google.cn/preview/download.html

随着我们向最终产品迈进,我们也会邀请用户加入测试,届时会在 Beta 版本开放申请。请保持关注,但请注意现在 Android 11 并不提供 Beta 版



请分享您的反馈!


您的反馈一如既往的重要,所以请务必和我们分享您的想法——我们越早听到您的声音,就能整合更多反馈。根据发布时间表,我们会着重消化接下来几周内收到的反馈。如果您在测试中发现了问题,请报告给我们

  • 分享您的想法

    https://developer.android.google.cn/preview/feedback.html

  • 报告问题

    https://issuetracker.google.com/issues/new?component=190602&template=1407746



 点击屏末 | 阅读原文 | 前往 Android 11 开发者网站了解详情

 想了解更多 Android 内容?

  • 在公众号首页发送关键词 "Android",获取相关历史技术文章;

  • 在公众号首页发送关键词 "ADS",获取开发者峰会演讲中文字幕视频;

  • 还有更多疑惑?欢迎点击菜单 "联系我们" 反馈您在开发过程中遇到的问题。

推荐阅读





    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存