作者丨Android Developers Blog
译者丨核子可乐
策划丨万佳
2 月 19 日,Android 开发者官方博客宣布:正式发布 Android 11 首款开发者预览版。
据悉,Android 11 将带来一系列新功能,包括对可折叠显示屏的支持、5G 增强功能、来电筛选 API、新的媒体与摄像头功能以及机器学习等等。这些还只是新版本的一部分内容。
Dave Burke 写道,“在 Android 11 中,我们将继续为用户带来更多创新技术,并保持对隐私性和安全性的高度关注。我们不仅增加了多项用于管理敏感数据和文件访问的新功能、同时还强化了某些关键区域,从而保持操作系统的良好弹性和安全性。”
5G 技术能为全球用户带来更高网速、更低延迟。
在 5G 技术的帮助下,大家可以把以往只能通过 WiFi 实现的应用体验扩展至移动用户,比如 4K 流媒体视频、云游戏等,也能据此构建专为 5G 网络环境设计的新体验。
在 Android 11 中,我们正在增强并更新现有的连接 API,以确保大家能享受 5G 带来的性能改进。
利用此 API,大家可以检查当前网络连接的性能水平;如果尚有充足余量,则能选择更高的素材分辨率或质量,从而强化应用的使用体验。
我们扩展了该 API 的兼容范围,让其支持蜂窝网络。这样,开发者就能在用户接入 5G 网络时识别出对应的运营商,保证应用始终根据当前网络条件带来最好的使用感受。
我们还更新了适用于 5G 环境的带宽估算 API,用以快速检查下行 / 上行带宽,用户不再需要轮询网络或者自行估算。
如果你的调制解调器不支持这项功能,我们将根据当前连接情况进行默认估算。
5G 技术不仅能将传统固网带出家门,还将帮助用户与周边环境(好友、家人乃至企业)无缝交互,增强“移动”体验。
设备制造商正不断将令人兴奋的全新移动设备外形与屏幕设计推向市场。
我们也着手在新的 Android 平台中增加对这些全新特性的支持,同时提供对应 API,以优化应用显示效果。
应用程序可以利用现有显示屏布局,充分管理针孔屏与瀑布屏等显示方案。
如果需要,开发者能让自己的应用程序铺满包括边框在内的整个瀑布屏,并通过嵌入图管理边框附近的交互操作。
对大多数用户来说,与朋友和同事们的沟通是手机上最重要的应用方式。
在 Android 11 中,我们引入了能帮助开发者创建更深层对话体验的变更,其中不少都将在此次开发者预览版(DP1)中得到体现:
用户可以在自己喜爱的应用程序中立即找到与特定对象的对话。
悬窗是一种在手机上执行多任务处理时,继续保持对话可见性与可访问性的方法。
消息与聊天应用在使用 Bubbles API 时,会向用户申请权限,并通过 Android 11 中的设置完成授权。
如果你的应用支持图像复制 / 粘贴,那么在新版本中,你可以允许用户将素材直接插入至通知回复中,从而实现更丰富的通信效果与应用功能设计。
作为此次预览版的重要组成部分,你将在 Chrome 中找到图片复制支持选项,并通过 Gboard 剪贴板查看图片粘贴支持功能。
实时双向通讯应用应当使用共享 / 会话快捷方式 API,借此保证 Android 系统在整个对话过程中显示 People 目标以及 Bubbles API,从而允许用户在使用其他应用功能的同时继续保持当前对话。
神经网络 API(NNAPI)专为 Android 设备上运行的机器学习类计算密集型操作而设计。
在 Android 11 中,我们正在扩展可供开发者使用的操作与控件。在新版本内,我们添加了新的操作与执行控件,借以优化以下常见用例:
服务质量 API,用于支持模型执行的优先级与超时情况。
内存域 API,用于减少连续模型执行带来的内存复制与转换操作。
扩展量化支持,我们添加了 signed integer asymmetric quantization ,它能在缩小模型体积的同时加快推理速度。
感兴趣的朋友可以查看 NDK 示例代码,其中包含与上述新 API 相关的应用示例。
在今后的预览更新中,我们将发布更多相关信息。我们正在与硬件供应商以及各大主流机器学习框架(例如 TensorFlow)团队开展合作,希望优化并实现对 NNAPI 1.3 的支持。
隐私一直是 Android 系统中的核心,每年我们都在尝试多种方法,来保护用户安全并提高系统的透明度与可控性。
其中不少变更受到用户的积极响应——例如在 Android 10 中,我们添加了“While app is in use”权限选项,帮助用户更精细地控制应用位置并限制后台位置访问。
到目前为止,约有半数用户会选择启用“While app is in use”选项。
在 Android 11 中,我们通过新的权限选项、范围存储更新等机制继续关注用户隐私保护。
对于最敏感的数据类型——除位置外,还包括设备的麦克风与摄像头启用——用户现在可以通过一次性授权方式将其临时开启。
这项权限意味着应用程序能暂时访问数据,但在用户退出应用后,授权即告结束。再次使用时,应用程序必须重新请求权限才能再次获取这部分数据。
Android 11 中的一次性权限对话框。
我们将继续努力,更好地保护外部存储介质上的应用程序与用户数据,同时不断为开发者提供更加轻松可行的迁移选项。
此次预览版中包含多项增强功能,例如在存储介质选择中添加原始文件路径访问、DocumentsUI 更新,以及 MediaStore 中的批处理编辑操作等等。
除以上变更外,用户还提到希望在 Android 的早期发布版本中获得更多保护,并希望强化应用程序的数据使用透明度。因此,我们正着手更新 Google Play 政策,希望确保应用程序只在必要时才会提出位置数据权限申请。
我们专注于提高各个 Android 版本的安全性标准——包括在更多设备类型上发布月度安全更新,以及为最新平台构建更多保护功能等。
在 Android 11 中,我们将 Android 的纵深防御策略扩展到移动平台上的更多区域之内,同时为应用添加了新的安全选项及配套 API。
我们扩展了系统对于生物特征识别的支持能力,以满足各类设备的实际需求。
BiometricPrompt 现在支持三种不同细化度的身份验证类型——具体分为强、弱以及设备凭证。我们还将 BIometricPrompt 流与应用程序的“活动”生命周期剥离开来。
换句话说,所有使用生物特征识别的应用都将转向 BiometricPrompt API。还有一个好消息,此 API 将入驻 AndroidX,因此早期版本的 Android 系统也将兼容这项新功能。
我们在各项关键安全组件(包括 BoundSan、IntSan、CFI 以及 Shadow-Call Stack)中扩展了基于编译器的清理器使用范围。
同时,我们还为只支持 Android 11 或更高版本的应用程序启用堆指针标记,旨在协助捕捉应用中产生的内存问题。
这些经过强化的改进有望在代码层面暴露出更多可重复 / 可再现的应用程序崩溃情况,进而降低应用程序的测试难度。
我们已经利用 HWAsan 查找并修复了系统中的大量内存错误,现在我们正式提供支持 HWAsan 的系统镜像,相信能够帮助更多朋友在应用程序中识别出此类问题。
应用程序现在可以通过 BlobstoreManager 与其他应用程序轻松安全地实现 data blob 共享。
Blob 存储特别适合同一用户在多款应用之间共享同一组机器学习模型这类用例。
Android 11 在系统平台上添加了对安全存储与可验证身份凭证(例如符合 ISO 18013-5 的汽车驾驶许可证)的检索支持。
从 Android 10 开始,我们一直扩大对 Google Play 系统更新(项目主线)的投入力度,希望提升整个生态系统的安全性、隐私性与一致性。
由于与设备制造商之间的紧密合作,我们已经在这方面取得重大进展,并通过基础设施扩展将 Google Play 更安全、更快速地推向更广泛的设备类型。
在 Android 11 中,我们添加 12 项新的可更新模块,意味着目前 Google Play 的总模块数已经达到 22 个。
更新重点包括一个用于在 Android 设备上对用户及开发者指向关键隐私控件的访问权限进行标准化管理的模块;一个用于在存储层面保护隐私的介质提供方模块;以及一个负责优化性能并保证跨 API 一致性的 NNAPI(神经网络 API)模块。
在发布新平台版本前,我们还会优先考虑应用程序的兼容性,借此保证更新后的运行速度与流畅性。
在 Android 11 中,我们添加新的进程、开发者工具以及发布里程碑,希望尽可能减少平台更新对应用性能造成的影响。
尽可能降低行为变更造成的影响:
虽然我们对 Android 做出的各项变更能提升系统实用性、安全性与性能水平,但也有部分变更可能影响开发者的应用体验。
在构建 Android 11 时,我们在这方面投入大量精力,认真观察系统变更对应用程序运行产生的影响,并尽可能将新功能设定为“可选”项目——只有在应用中将 targetSdkVersion 设置为“R”,开发者才会真正使用到这些新特性。
这将把变更对应用程序行为的影响降至最低。我们希望为开发者们赋予更多控制权,保证有更多应用程序能在 Android 11 上实现开箱即用。
为帮助大家轻松测试应用兼容性,我们为多项重大变更提供可切换选项,因此大家能通过开发者选项或者 adb 强制启用 / 禁用这些变更。
如此一来,你无需变更 targetSdkVersion 或者重新编译应用,即可实现对应用程序的基本测试。
开发者选项中的应用兼容性切换功能。
我们更新了受限非 SDK 接口,同时也欢迎大家就是否需要使用等效公共 API 向我们提交反馈意见。
作为非 SDK 接口的替代性举措之一,开发者们要求我们提供公共 API,借此在运行时内动态加载资源与资产。如大家所愿,我们在 Android 11 中添加了 Resource Loader 框架,同时也感谢各位提供反馈的开发者朋友!
开发者们提醒我们,由于缺少明确的最终变更日期,在以往 Android 版本上实现应用程序的早期兼容性一直非常困难。
因此,在 Android 11 中,我们添加了新的“平台稳定性”里程碑。该里程碑有望在今年 6 月初实现,其中不仅包含最终 SDK/NDK API,同时也将提供可能影响应用程序运行效果的最终内部 API 与系统行为设计。
来电筛选应用现在可以更全面地服务于用户。应用程序能将来电的 STIR/SAKEN 验证状态作为细节信息的一部分,同时对系统提供的来电筛选显示界面进行自定义,允许用户将来电标记为垃圾信息或者添加到联系人等等。
我们扩展了 Wi-Fi 提示 API,确保连接管理应用具有更强大的网络自主管理能力。
例如,该应用可以关闭网络建议、管理 Passpoint 网络、接收关于已连接网络的更多质量信息,并通过其他管理变更强制断开当前连接。
Android 现在会强制执行并通知 Passpoint 配置文件的到期日期,支持在配置文件中应用 Common Name 规范,并允许 Passpoint R1 配置文件使用具有自签名的专用 CA。
连接应用现在可利用 Wi-Fi 提示 API 管理 Passpoint 网络。
ImageDecoder API 现在允许开发者解码并渲染存储在 HEIF 文件中的图像序列动画,从而在使用高质量素材的同时,最大程度降低对网络数据及 apk 大小的影响。
与 GIF 动图相比,HEIF 图像序列能大幅削减文件体积。开发者可以使用 HEIF 源调用 encodeDrawable,轻松在自己的应用程序内显示 HEIF 图像序列。如果源中包含图像序列,则返回 AnimatedImageDrawable。
新的 NDK API 使应用程序能通过原生代码解码与编码图像(JEPF、PNG、WebP 等)实现图形生成或后期处理。
由于无需捆绑外部库,你的 apk 文件将得到有效瘦身。这款原生解码器还将充分利用 Android 系统中的平台安全更新。
利用新的 API,应用将在会话处于活动状态时,自动关闭由铃声、警报或者通知带来的声音 / 振动提醒。
应用可以利用元数据标签在受支持的设备上实现 Bokeh 拍摄模式。其中静态图像模式将带来更高的拍摄质量,而连续拍摄模式也可保证捕捉内容与传感器输出(例如视频捕捉)严格保持同步。
低延迟视频功能对于实时视频流应用以及 Stadia 云游戏等服务至关重要。
支持低延迟播放的视频编 / 解码器在解码开始后,会尽快返回视频流的第一帧。应用程序能利用新的 API 检查并配置特定编 / 解码器中的低延迟播放功能。
应用可利用新的 API 在外部显示器及电视设备上检查并申请开启自动低延迟模式(也称游戏显示模式)。在此模式下,显示器或电视会禁用图像后处理功能,以最大程度降低延迟水平。
关于新版本的更多相关信息,请参阅 Android 11 开发者网站。其中包含版本新增功能、行为变更细节、设置与迁移指南、发布说明以及反馈渠道等一系列重要内容。
InfoQ 读者交流群上线啦!各位小伙伴可以扫描下方二维码,添加 InfoQ 小助手,回复关键字“进群”申请入群。大家可以和 InfoQ 读者一起畅所欲言,和编辑们零距离接触,超值的技术礼包等你领取,还有超值活动等你参加,快来加入我们吧!
点个在看少个 bug👇