Android Q Beta 正式发布 | 精于形,安于内

4,783 阅读20分钟

移动行业在 2019 年创新不断,随着 5G 时代的到来与折叠屏技术的成熟,智能设备正在迈向未来新时代,而 Android 更是处在颠覆创新的风口浪尖。通过与生态圈伙伴们的深度合作,我们从软件到硬件不断进行突破和创新,力求为全球亿万用户打造最新的体验与功能。

随着移动生态圈的蓬勃发展,Android 在注重技术创新的同时,也在加速推进安全与隐私方面的工作,确保用户能够安心享受卓越的移动体验。在 Google Play Protect 和运行时权限等技术的基础上,Android Q 添加了多项隐私及安全防护功能,以及一系列精彩纷呈的新特性与优化项,如折叠屏增强、新网络连接 API、全新的媒体解码器、摄像头新功能、NNAPI 扩展、Vulkan 1.1 支持、应用启动提速、安全改进等等。

今天,我们正式推出 Android Q Beta 1 版本及预览版 SDK ,欢迎各位开发者及早期用户尝鲜体验。您可在 Pixel 设备上立即参与 Beta 1 试用计划 (听取 Pixel 用户的热情呼声之后,我们特别添加了 Piexl 和 Pixel XL 这两个型号),并向我们及时反馈您的使用感受。请耐心阅读下文,进一步了解 Android Q 的独特魅力。此外,我们将在今年 5 月举办 2019 Google I/O 开发者大会,届时会有更多精彩与您分享, 期待与您相见!

隐私保护持续升级

一直以来,Android 将数据安全与用户隐私视为重要使命。在平台更新迭代的过程中,我们添加了许多安全特性,其中包括基于文件的加密、应用对敏感信息的访问权限摄像头/麦克风后台访问锁定模式加密备份等,并推出了 Google Play Protect 机制,每日扫描超过 500 亿应用,时刻监测潜在安全威胁。Android Q 进一步提升了系统的安全防护水平,持续为用户保驾护航。其中,Project Strobe 计划负责推进大部分的安全优化与增强工作。

给予用户更多地理位置控制

在 Android Q 中,用户可进一步控制应用访问设备地理位置的时间。在之前的几个 Android 版本中,应用只有在请求并获得用户同意后,才能获取设备当前的位置信息。

定位权限比较敏感的一点在于,如果应用当前并未处于活跃状态 (即运行在后台),它是否可以继续持有这个权限。Android Q 允许用户指定应用从不、仅在使用期间 (运行时),或者任何时候 (退到后台) 都能获取位置信息。

例如,外卖应用在送餐前询问位置信息是合理的,用户也许愿意授予,但是当用户没有使用此应用时,地理位置信息就没必要再被获取,而且用户或许也不情愿授予这个权限。请阅读 Android 官方文档,了解更多技术细节,让您的应用妥善应对新的权限管理模式。我们将在接下来的几个 Beta 版中陆续引入更多以用户为中心的优化项,请拭目以待。我们的目标是当出现变更时,尽早向开发者发布通知,并给予最大程度的支持,尽全力帮助开发者应对这些变更。

隐私保护升级

除了位置权限的变更以外,我们在隐私防护方面也毫不松懈,确保流程公开透明,完善权限管控机制,多角度保护用户的个人信息。

在 Android Q 中,用户可以更好地管理应用对共享文件的访问权限。用户可通过新的运行时权限允许应用访问照片、视频或音频文件。此外,应用必需通过系统文件选择器才能访问下载文件,也就是说,访问权限完全由用户掌控。Android Q 还针对外部储存空间引入了一些变更,请务必仔细阅读此文档,确保应用正确使用外部储存空间。

另外,我们还发现后台应用突然跳转至前台,挡住当前应用的行为让用户和开发者们颇为烦心。为了避免应用频繁打断用户操作,Android Q 将禁止后台应用启动 Activity。如果您的应用运行在后台,但又需要立即引起用户关注,例如来电或闹铃,请使用高优先级通知,并提供一个全屏 intent。请阅读相关文档,了解更多信息。

我们将限制应用访问不可重设的设备识别码,如 IMEI、序列号等。请阅读《唯一标识符最佳做法》为应用选择最合适的标识符。您也可以参阅官方文档,获取更多细节内容。此外,Android Q 默认启用 MAC 地址随机化功能,当设备连接到不同的 Wi-Fi 网络时,系统会随机生成不同的 MAC 地址 ——在 Android 9 Pie 中,该特性为附加功能,开发者可自行选择是否启用。

我们之所以提早公布这些变更,为的是给您预留充足的时间做好准备。与此同时,我们也在加紧工作,期望尽早为您提供相关细节内容。建议您仔细阅读隐私变更相关文档,并尽早着手测试工作。

用户互动新方式

Android Q 开创了全新的用户互动模式,并让应用间的切换更加流畅顺滑。

适配折叠屏和新型屏幕

智能设备已迎来折叠新时代,这不仅是对用户体验的颠覆创新,同时也为移动设备的使用场景开启了无限可能。为了帮助开发者顺利适配折叠屏及大屏设备,Android Q 引入了多项改进,比如说我们更新了 onResume onPause 的工作模式,以便为 multi-resume 提供更好的支持,另外我们还添加了当应用获得焦点后的通知功能。最后,为了让您更好的管理应用在折叠屏及大屏上的显示,我们也更新了 resizeableActivity 属性的功能。为了让尽快着手应用的开发和测试工作,我们正在紧锣密鼓地对模拟器进行升级。请留意我们于近期公布的相关信息。

Sharing Shortcuts

当用户想在另一个应用上与朋友们分享照片等内容时,他们希望整个流程是快速流畅的。为此,Android Q 新增了一项名为 Sharing Shortcuts 的特性,允许用户直接跳转至另一个应用进行分享。开发者首先需要发布一个分享目标,该目标随后会在应用中启动一个包含内容附件的特定 Activity,并通过 share UI 显示给用户。因为分享目标已提前发布,所以 share UI 可在 Activity 启动后立即加载分享内容。

由于 Sharing Shortcuts 与 App Shortcuts 所采用的工作机制基本相同,所以我们扩展了 ShortcutInfo API,方便您在应用中整合这两项特性。AndroidX 中新推出的 ShareTarget 库也已引入 ShortcutInfo API 支持,这样一来,应用不仅能够使用新特性,而且 Q 之前的设备也可继续使用直接共享 (Direct Share) 功能。请查看示例应用及其源代码

设置面板

我们已经将 Android 9 Pie 中的 Slices 技术完美整合到 Settings Panel API 中,现在您可利用该 API 直接在应用界面内显示系统设置。

设置面板指您从应用中触发的一个浮动 UI 界面,用于显示用户可能需要修改的系统设置,如网络连接、NFC、音量等。比如说,浏览器可以在面板上显示如飞行模式、WiFi (包括附近网络)、移动数据等与网络连接相关的设置。用户无需退出应用,便可直接在面板上进行操作。如果您想在应用中启用该功能,请通过 Settings.Panel actions 触发一个 intent。

网络连接

在 Android Q 中,我们扩展了 Android 网络连接堆栈的功能,并添加了一些新的网络连接 API。

网络连接权限、隐私及安全

此前,大部分网络扫描 API 在获取 COARSE 位置权限后便能被调用,但是从 Android Q 开始,我们提高了蓝牙、蜂窝网络以及 Wi-Fi 的安全规定,要求这些 API 必须具备 FINE 权限。如果您的应用只需建立 P2P 连接或建议可用网络,请查看优化后的 Wi-Fi API,它们能帮助您简化网络连接,而且不需要位置权限。

在 Wi-Fi 安全方面,Android Q 除了会为每个 Wi-Fi 地址随机生成不同的 MAC 地址以为,还添加了对新一代 Wi-Fi 标准协议 (WP3 和 Enhanced Open) 的支持,全方位提升家庭、工作及公共网络环境的安全性。

优化 P2P 及网络连接

在 Android Q 中,我们对 Wi-Fi 堆栈进行了重构,这不仅提升了应用在隐私及性能方面的表现,而且对许多常见用例也有一定的优化作用,如 IoT 设备管理,显示可用网络等,无需请求位置权限。

网络连接 API 让您可以更轻松地管理 IoT 设备,并使用配置、下载和打印等 P2P 功能。应用通过将 SSID 和 BSSID 中的偏好设置指定为 WiFiNetworkSpecifiers, 间接发起网络连接请求;系统负责扫描附近的 Wi-Fi,并在 Wi-Fi 选择器中显示匹配结果。当用户选择网络后,系统会自动设置网络连接。

网络建议 API 允许应用用户显示推荐的网络选项。应用会对网络和证书进行排名,并将该列表作为 WifiNetworkSuggestions,以此来间接发起网络连接。随后,系统便会根据用户的历史偏好,从列表中挑选出最合适的选项,并建立无缝连接。

Wi-Fi 性能模式

您现在可以在 Android Q 中启用高性能、低延迟的自适应 Wi-Fi 模式,这样一来,即使是在网络延迟比较敏感的场景下,如实时游戏、主动呼叫等,依旧能保障流畅的用户体验。

如需启用新的性能模式,请通过 WIFI_MODE_FULL_LOW_LATENCY 或 WIFI_MODE_FULL_HIGH_PERF 调用 WifiManager.WifiLock.createWifiLock()。在这些模式下,Android 平台将配合设备固件协同工作,实现最低能耗。

摄像头、媒体及图像

新的图片格式: 动态深度

许多移动设备的摄像头利用算法处理被摄对象、前景与背景三者的距离,通过前景背景虚化,模拟出有层次的浅景深效果。摄像头首先会捕获图片上多个点的深度元数据,然后在图片上应用静态虚化效果,最后再丢弃之前收集的元数据。

从 Android Q 开始,应用可在支持设备上请求生成动态深度图片,文件内包含与深度元素相关的 JEPG 与 XMP 元数据,并内嵌一组深度图与置信图。

"JPEG + 动态深度" 图片可以帮您在应用中实现模糊或散景效果。在未来,您甚至可以利用这些数据生成 3D 图片或者支持 AR 摄像用例。希望在我们的努力下,动态深度格式能成为惠及整个生态圈的开放格式。与此同时,我们还在与各大设备厂商展开密切合作,进一步普及 Android Q (以及未来版本系统) 设备对该图片格式的采用率。

动态深度图片可以让您在应用中实现模糊或散景效果

新的音频及视频解码器

Android Q 现已支持开源视频解码器 AV1,媒体供应商只需更少的带宽就能将高质量视频内容传输至 Android 设备上。我们还添加了对 Opus 音频格式的支持。Opus 编码器能自动识别输入信号是语音还是音乐,然后据此选择优化的编码模式。此外,用户也可在支持 HDR 10+ 的 Android Q 设备上,播放高动态范围视频。

MediaCodecInfo API 可帮助开发者更轻松地判定 Android 设备的视频渲染能力。您可调用 VideoCodecCapabilities.getSupportedPerformancePoints() 获取现有解码器所支持的文件大小和帧率,以确保设备能够播放最佳质量的视频内容。

原生 MIDI API

针对使用 C++ 代码处理音频文件的应用,Android Q 添加了原生 MIDI API,让应用可以通过 NDK 与 MIDI 设备进行数据传输。应用可在音频的回调函数中使用非阻塞读取来检索 MIDI 数据。欢迎大家查看参考示例应用及其源代码

基于 Vulkan 的 ANGLE 渲染引擎

我们正在努力行动争取为 Vulkan 设备带去可更新的标准化 OpenGL 引擎。Android Q 在 Vulkan 的基础上为 Android 设备添加了 ANGLE 支持。ANGLE 是一款专为高性能 OpenGL 功能实现打造图像抽象层。有了 ANGLE 之后,使用 OpenGL ES 进行开发的应用和游戏便可直接体验 Vulkan 带来的强劲性能与高稳定性,并了在 Android 设备上部署统一且不受供应商限制的 ES 实现。我们计划在 Android Q 中引入 OpenGL ES 2.0 支持,此外,针对 ES 3.0 的支持也在密集筹划中。

今后,我们会继续拓展 Android 设备上的 ES 实现,为开发者带去更多的 OpenGL 功能,错误修复和性能优化项。请阅读相关文档,了解 Android 对 ANGLE 的现有支持,具体操作以及后续发展计划。如果您想在应用内测试 ANGLE 初期支持,请在设置中启用开发者选项。心动不如行动,不妨立即上手试一下吧!

随时随地,尽享 Vulkan

Vulkan 是一款面向 3D 图形渲染推出的革命性 API,具备低消耗、高性能、跨平台等优势,我们将继续扩展 Vulkan 在 Android 平台上的应用范围,努力将其打造成一款支持范围广、一致性高的图形 API。目前,我们已多家设备厂商达成合作,有望在运行 Android Q 或更高版本系统的设备上加入 Vulkan 1.1,其中,64 位设备为硬性要求,而对于 32 位设备则为推荐配置。通过与生态圈伙伴的开放合作,我们希望在将来为应用和游戏开发者们提供一套标准的高性能图形 API。

神经网络 API 1.2

自 2017 年推出神经网络 API 以来,我们持续投入大量精力,在优化现有功能的基础上,积极探索新的应用场景。我们在 Android Q 中新增了 60 个算子,其中包括 ARGMAX、ARGMIN、量化 LSTM,以及大量性能优化项,为模型加速奠定了坚实的基础,如目标检测模型和图像分割模型。目前,我们正在和硬件合作伙伴以及主流机器学习框架提供商 (如 TenserFlow) 展开积极合作,共同推进神经网络 API 1.2 优化和支持工作。

强化 Android 基础

ART 性能

Android Q 为 ART 运行时新添了多项改进。开发者无需进行任何操作,便可有效缩短应用的启动时间,减少内存消耗。

自从 Android Nougat 开始,ART 便引入了配置文件引导型优化机制,通过识别并预编译频繁执行的代码,达到缩短应用启动时间的目的。为了进一步加快应用的启动速度,Google Play 现在除了 APK 文件之外,还会交付一套基于云的配置文件。它是一套已经过匿名化处理的汇总 ATR 配置文件,允许 ART 在应用开始运行之前就预编译一部分代码,这有助于显著提升优化进程的整体效率。基于云的编译文件适用于所有应用,而且运行 Android P 或更高版本系统的设备目前已提供相关支持。

我们也一直在努力提升 ART 的性能,例如,我们改进了 Android Q 中的 Zygote 进程,提早开启应用进程并将其移至安全容器中,如此一来,应用便做好了随时启动的准备。此外,我们还在应用的系统启动映像中加入了更多信息,例如类,并借助线程管理加快映像文件的加载速度。与此同时,我们还在 ART 的并发复制垃圾收集器 (Concurrent Copying Garbage Collector) 中加入了分代收集机制 (Generational Garbage Collection)。分代算法可以将新生代的对象单独收集出来,这样效率更高,而且与 full-heap GC 相比成本更小,释放空间也十分可观。总体而言,引入分代算法后,ART 垃圾回收速度和 CPU 利用效率有了明显提升,在减少垃圾的同时,帮助应用在低端设备上流畅运行。

应用安全

BiometricPrompt 是 Android 推出的统一验证框架,它能为生物识别提供层面的支持。Android Q 扩展了对人脸识别等被动验证手段的支持,并加入了隐式和显式两个类型的身份验证流。在显式验证流中,用户必须在可执行环境 (TEE) 下明确确认执行事务操作;隐式验证流则主要负责被动验证这类较为轻便的事务。此外,我们还改进了设备证书的版本回滚,如有需求,您可重新生成证书。

Android Q 还添加了 TLS 1.3 支持。作为 TLS 标准的一次重大更新,TLS 1.3 协议在安全性、性能和隐私方面都进行了大幅优化。根据我们收集到的数据显示,与 TLS 1.2 相比,1.3 版本的安全网络连接速度加快了 40%。默认情况下,所有 TLS 连接均启用 TLS 1.3。更多细节,请参考官方文档

兼容公开 API

如何确保应用可在所有版本的 Android 系统上流畅运行我们聚焦的另一个问题。如果您的应用调用了非 SDK 接口,可能会导致用户遭遇系统崩溃及开发者需要紧急发布修复的风险。把所有应用迁移到公开 API 是我们从 Android P 就开始的一项长期任务,而 Android Q 更是进一步加大管控力度,收紧相关限制。我们深知从应用中移除非 SDK 接口是一项耗时费力的艰巨挑战,因此我们向您提前公布非 SDK 接口限制的最新通知,希望您能作好万全准备,妥善应对。

在 Android Q 中,受限制的非 SDK 接口数量更多了,建议您在开发时选用相等功能的公开 SDK 接口。为了帮助您成功过渡,并防止应用出现崩溃等问题,仅当应用的目标平台为 Android Q 时,这些限制才会生效。我们会根据收集到的开发者请求,继续增加可替代的公开 API,如果现有的公开 API 无法解决您的问题,请及时向我们反馈

还有一点很重要: 请您对应用进行非 SDK 接口使用方面的测试。推荐您使用 StrictMode 方法 detectNonSdkApiUsage() 来检测违规调用,它会在应用通过反射或 JNI 访问非 SDK API 时发出警告。即使 API 当前尚处于豁免状态 (灰名单),我们还是建议您尽早作长远打算,尽量避免在应用中使用此类 API,以降低潜在的不兼容风险。请阅读开发者指南,了解 Android Q 中的限制详情。

现代化 Android

为了确保所有应用都能及时享用 Android 在安全和性能方面的最新优化,我们从未停止前进的脚步。从下半年开始,Google Play 将要求所有新应用及更新将 targetSdkVersion 设置为 28 (Android 9 Pie)。除此以外,当用户首次运行 API 低级低于 23 (Android Marshmallow) 的应用时,会受到来自 Android Q 的警告信息。请阅读《符合 Google Play 的目标 API 级别要求》,顺利开展应用的迁移工作。

从今年下半年开始,所有应用都必须满足 Google Play 64 位要求。如果您的应用使用原生 SDK 或开发库,请务必将它们升级到符合 64 位要求的版本。请阅读官方文档,获取更多技术细节和具体指导。

简单几步,轻松上手 Android Q Beta

Android Q 新添加的重要隐私特性可能会对您的应用造成影响,因此我们建议您立即着手测试工作。请您尤其注意外部储存变更、新的位置请求状态、后台应用启动限制、设备识别码限制这几项变更。更多信息,请阅读隐私文档

请从应用商店下载您的应用,并在运行 Android Q Beta 的设备或 Android 虚拟设备上测试用户流程,确保应用运行顺畅,界面美观,并妥善处理 Anadroid Q 行为变更。如果您发现任何问题,我们建议您在当前应用中进行修复,无需变更目标平台级别。请阅读迁移指南,了解具体操作步骤及关键时间节点。

下一步,请尽快将应用的 targetSdkVersion 设置为 'Q' ,测试应用是否可顺利支持 Android Q 中的安全与隐私特性,以及其他行为变更

探索新特性与 API

当您准备就绪后,请进一步探索 Android Q 并了解可在应用中使用的诸多新特性及 API。 更多内容,请阅读 API 变化报告Android Q Beta API 参考文档或开发者指南。您亦可前往 Android Q Beta 开发者官网,阅读版本说明,或通过反馈页面向我们报错。

如果您想为 Android Q 开发应用,只需将 Android Q Beta SDK 和工具下载到 Android Studio 3.3 (或更高版本),并按照步骤配置开发环境。 如果您想享用 Android Q 行为变更的最新修复,建议您使用 Android Studio 3.5 (或更高版本)。

如何获取 Android Q Beta

获取步骤十分简单,您可立即加入测试版计划,我们将向 Pixel 设备推送 Android Q Beta 版的系统更新 (今年,三代 Pixel 设备都在支持范围内 —— Pixel 3, Pixel 2, 甚至是初代 Pixel!)。点击此处下载适用于 Pixel 设备的系统镜像文件。如果您没有 Pixel 设备,则可通过 Android Studio 中的 SDK Manger 下载最新版本的模拟器镜像文件,并安装至 Android 模拟器。

我们计划在预览版阶段定期更新预览版系统镜像文件和 SDK,并在将来的几个 Beta 版中,陆续推出更多新功能,敬请期待!

您的反馈意见对我们非常重要,所以欢迎您在下方评论区留言联系我们,分享您的使用感受、想法与建议。谢谢!

点击这里前往 Android 开发者官方文档查看更多