更上一层楼: Android 11 首个开发者预览版到来
Android 11 开发者网站 https://developer.android.google.cn/11 系统映像 https://developer.android.google.cn/preview/download
发布日程
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 剪贴板粘贴图像。
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 (NNAPI) 用于在 Android 设备的机器学习中运行计算密集型操作。在 Android 11 上,我们将继续扩展开发者可以使用的算子和控制。在今天发布的预览版中,我们添加了新的算子和运行控制,用来优化常见的使用场景:
服务质量 API 支持设置模型执行的优先级和超时。 Memory Domain API 减少了用于连续模型执行时的内存复制和转换。 扩大量化支持,我们增加了对有符号整数非对称量化的支持,该算法使用有符号整数代替浮点数,以实现更小的模型和更快的推断。
有符号整数非对称量化
https://www.tensorflow.org/lite/performance/quantization_spec
NDK 样例代码
https://github.com/android/ndk-samples/tree/master/nn-samples/
隐私和安全
隐私
在 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
了解更多 https://android-developers.googleblog.com/2020/02/safer-location-access.html
安全
生物验证 - 我们已经扩展了生物验证的支持,以满足各种设备的需求。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 系统更新
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
分享使用反馈
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
设置说明 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 开发者网站 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 内容?
在公众号首页发送关键词 "Android",获取相关历史技术文章;
在公众号首页发送关键词 "ADS",获取开发者峰会演讲中文字幕视频;
还有更多疑惑?欢迎点击菜单 "联系我们" 反馈您在开发过程中遇到的问题。
推荐阅读