360 开测-Android Q 已上线!!!

简介 Android Q Beta

2019 年,移动创新比以往任何时候都更加强大,5G 到全面屏显示器甚至可折叠屏幕的新技术。Android 正处于这一创新周期的中心,并且由于数十亿设备的广泛合作伙伴生态系统,Android 有助于突破硬件和软件的界限,为用户带来新的体验和功能。
随着移动生态系统的发展,Android 专注于帮助用户利用最新的创新,同时确保用户的安全和隐私始终是首要任务。基于 Google Play Protect 和运行时权限等工作,Android Q 为用户带来了许多额外的隐私和安全功能,以及可折叠的增强功能,用于连接的新 API,新媒体编解码器和相机功能,NNAPI 扩展,Vulkan 1.1 支持,更快的应用启动等等。

建立在 Android 的隐私保护之上

Android 在中心设计了安全和隐私。随着 Android 的成熟,添加了一系列功能来保护用户,例如基于文件的加密,需要应用程序在访问敏感资源之前请求权限的操作系统控件,锁定相机/麦克风后台访问,锁定模式,加密备份,Google Play Protect(每天扫描超过 500 亿个应用以识别可能有害的应用并将其删除)等等。在 Android Q 中,我们进行了更多增强功能以​​保护用户。其中许多增强功能都是我们在 Strobe 项目中工作的一部分。

让用户更好地控制位置

借助 Android Q,操作系统可帮助用户更好地控制应用何时获取位置信息。与以前版本的操作系统一样,只有在应用程序请求您许可后,应用程序才能获取位置,并且您已授予该权限。
一个特别敏感的事情是应用程序未使用时(在后台)应用程序访问位置。Android Q 允许用户授予应用程序权限,以便永远不会看到他们的位置,仅在应用程序正在使用(运行)时,或始终(在后台)。
例如,要求用户的食物递送位置的应用程序是有意义的,并且用户可能想要授予它执行该操作的能力。但由于应用程序可能不需要位于当前正在使用的位置之外,因此用户可能不希望授予该访问权限。Android Q 现在提供更高级别的控制。

Android Q 中的更多隐私保护

在 Android Q 中,操作系统使用户可以更好地控制应用程序,控制对共享文件的访问。用户将能够通过新的运行时权限控制应用程序对照片和视频或音频集合的访问。对于下载,应用必须使用系统文件选择器,允许用户决定应用可以访问哪些下载文件。对于开发人员,应用程序可以在外部存储上使用共享区域的方式发生了变化。
当应用程序意外跳转到前台并重新关注时,用户(和开发人员!)会感到不安。为了减少这些中断,Android Q 将阻止应用在后台启动活动。如果您的应用程序处于后台并且需要快速引起用户的注意 - 例如来电或闹钟 - 您可以使用高优先级通知并提供全屏意图。

可折叠和创新的新屏幕

可折叠设备开辟了一些创新体验和用例。为了帮助用户的应用利用这些和其他大屏幕设备,Android Q 还进行了一些其他改进,包括对 onResume 和 onPause 的更改,以支持多重简历,并在重点关注时通知您的应用。还更改了 resizeableActivity 清单属性的工作方式,以帮助您管理应用在可折叠和大屏幕上的显示方式。

分享快捷方式

当用户想要与另一个应用中的某人共享照片等内容时,该过程应该很快。在 Android Q 中使用 “共享快捷方式” 让用户更快更轻松,这样用户就可以直接跳转到另一个应用程序来共享内容。开发人员可以发布在其应用中添加内容的特定活动的共享目标,并在共享 UI 中向用户显示这些目标。因为它们是预先发布的,所以共享 UI 可以在启动时立即加载。

共享快捷方式机制类似于应用程序快捷方式的工作方式,因此 Android Q 扩展了 ShortcutInfo API,使两个功能的集成更加容易。新的 ShareTarget AndroidX 库也支持这个新的 API。这允许应用程序使用新功能,同时允许 pre-Q 设备使用 Direct Share 工作。

设置面板

现在还可以通过新的设置面板 API 直接在应用程序的上下文中显示关键系统设置,该 API 利用了在 Android 9 Pie 中引入的切片功能。
设置面板是一个浮动 UI,您可以从应用程序调用该 UI 以显示用户可能需要的系统设置,例如 Internet 连接,NFC 和音量。例如,浏览器可以显示具有连接设置的面板,如飞行模式,Wi-Fi(包括附近的网络)和移动数据。没有必要离开应用程序; 用户可以从面板中根据需要管理设置。要显示设置面板,只需使用新的 Settings.Panel 操作之一触发意图。

连接,连接权限,隐私和安全性

在 Android Q 中,还扩展了应用程序可以使用 Android 的连接堆栈并添加新的连接 API。
我们用于扫描网络的大多数 API 都需要 COARSE 位置权限,但在 Android Q 中,对于蓝牙,移动电话和 Wi-Fi,是通过要求获得 FINE 位置权限来增加对这些 API 的保护。如果您的应用只需要建立点对点连接或建议网络,请查看下面改进的 Wi-Fi API - 它们简化了连接,不需要位置许可。
除了 Android Q 在连接到不同 Wi-Fi 网络时提供的随机 MAC 地址,我们还添加了新的 Wi-Fi 标准支持,WPA3 和增强型开放,以提高家庭和工作网络以及开放/公共网络的安全性网络。

改进了点对点和互联网连接

在 Android Q 中,重构了 Wi-Fi 堆栈以改善隐私和性能,同时也改善了管理物联网设备和建议互联网连接等常见用例 - 无需位置许可。
通过网络连接 API,可以更轻松地通过本地 Wi-Fi 管理物联网设备,实现配置,下载或打印等对等功能。应用程序通过将首选 SSID 和 BSSID 指定为 WiFiNetworkSpecifiers 来间接启动连接请求。该平台处理 Wi-Fi 扫描本身并在 Wi-Fi 选择器中显示匹配的网络。当用户选择时,平台会自动设置连接。
该 网络建议的 API 允许应用表面优选 Wi-Fi 网络给用户用于互联网连接。应用程序通过提供网络和凭据的排序列表来间接启动连接,如 WifiNetworkSuggestions。该平台将在这些网络的范围内基于过去的性能无缝连接。

Wi-Fi 性能模式

通过启用高性能和低延迟模式在 Android Q 中请求自适应 Wi-Fi。如果低延迟对用户体验很重要,例如实时游戏,主动语音呼叫和类似用例,这些将​​是非常有益的。
要使用新的性能模式,请使用或调用 WifiManager.WifiLock.createWifiLock()。在这些模式下,平台与设备固件配合使用,以最低功耗满足要求。
WIFI_MODE_FULL_LOW_LATENCYWIFI_MODE_FULL_HIGH_PERF

相机,媒体,图形

照片的动态深度格式
移动设备上的许多相机可以通过模糊相对于主体的前景或背景来模拟窄景深。它们捕获图像中各个点的深度元数据,并对图像应用静态模糊,然后丢弃深度元数据。
从 Android Q 开始,应用可以请求动态深度图像,该图像由与深度相关元素相关的 JPEG,XMP 元数据以及嵌入在广告支持的设备上的同一文件中的深度和置信度图组成。
请求 JPEG + 动态深度图像使您可以在应用程序中提供专门的模糊和散景选项。您甚至可以在将来使用数据创建 3D 图像或支持 AR 摄影用例。将 Dynamic Depth 作为生态系统的开放格式,使其在运行 Android Q 及更高版本的设备上可用。



使用动态深度图像,您可以在应用程序中提供专门的模糊和散景选项。

新的音频和视频编解码器

Android Q 引入了对开源视频编解码器 AV1 的支持。这允许媒体提供商使用更少的带宽将高质量的视频内容流式传输到 Android 设备。此外,Android Q 支持使用 Opus(一种针对语音和音乐流优化的编解码器)的音频编码,以及支持它的设备上的高动态范围视频的 HDR10 +。
该 MediaCodecInfo API 引入了一个更简单的方法来确定视频渲染的 Android 设备的能力。对于任何给定的编解码器,您可以使用 VideoCodecCapabilities.getSupportedPerformancePoints()获取支持的大小和帧速率列表。这允许您选择要在任何给定设备上呈现的最佳质量的视频内容。

原生 MIDI API

对于使用 C ++ 执行音频处理的应用程序,Android Q 引入了原生 MIDI API,通过 NDK 与 MIDI 设备进行通信。此 API 允许使用非阻塞读取在音频回调内检索 MIDI 数据,从而实现 MIDI 消息的低延迟处理。

加强 Android 的基础

##ART 表现

Android Q 引入了 ART 运行时的几项新改进,可帮助应用程序更快地启动并消耗更少的内存,而无需开发人员的任何工作。
自 Android Nougat 以来,ART 提供了配置文件引导优化(PGO),它通过识别和预编译代码中经常执行的部分来加速应用程序启动。为了帮助初始应用启动,Google Play 现在提供基于云的配置文件以及 APK。这些是匿名的聚合 ART 配置文件,让 ART 在应用程序运行之前预编译部分应用程序,从而为整个优化过程提供了重要的启动。基于云的配置文件使所有应用程序受益,并且它们已经可用于运行 Android P 及更高版本的设备。

在 Android Q 中,我们通过提前启动应用程序进程并将其移至安全容器来优化 Zygote 进程,因此可以立即启动。我们将更多信息存储在应用程序的堆映像中,例如类,并使用线程来更快地加载映像。我们还在 ART 的 Concurrent Copying(CC)垃圾收集器中添加了 Generational Garbage Collection。分代 CC 更有效率,因为它分别收集年轻代对象,与全堆 GC 相比,成本更低,同时仍然可以回收大量空间。这使得垃圾收集整体上在时间和 CPU 方面更加高效,减少了 jank 并帮助应用程序在低端设备上更好地运行。

应用安全性

在 Android Q 中,扩展了对诸如 face 之类的被动身份验证方法的支持,以及添加隐式和显式身份验证流程。在显式流程中,用户必须在身份验证期间明确确认 TEE 中的事务。隐式流程设计用于具有被动身份验证的事务的轻量级替代方案。我们还在需要时改进了设备凭据的后备。
Android Q 增加了对 TLS 1.3 的支持,TLS 1.3 是对 TLS 标准的重大修订,包括性能优势和增强的安全性。测试表明,与 TLS 1.2 相比,使用 TLS 1.3 可以将安全连接的速度提高 40%。默认情况下,为所有 TLS 连接启用 TLS 1.3。

通过公共 API 的兼容性

我们所关心的另一件事是确保应用程序在操作系统发生变化和发展时顺利运行。使用非 SDK API 的应用程序可能会面临用户崩溃和开发人员紧急部署的风险。在 Android Q 中,将继续在 Android P 中开始的长期努力,将应用程序转移到仅使用公共 API。
在 Android Q 中,限制访问更多非 SDK 接口,并要求您使用公共等效项。为了帮助用户进行转换并防止您的应用遭遇破坏,仅在用户的应用定位到 Android Q 时才启用限制,会根据用户的要求继续添加公共替代 API。
测试应用程序以使用非 SDK 接口 非常重要。官方建议使用 StrictMode 方法 detectNonSdkApiUsage()来警告您的应用程序何时通过反射或 JNI 访问非 SDK API。即使此时 API 被免除(灰名单),最好规划未来并消除其使用以减少兼容性问题。


↙↙↙阅读原文可查看相关链接,并与作者交流