介绍 Android Q Beta版

原文来自: Introducing Android Q Beta

2019年,移动创新比以往更加强大。新型科技从5G到边缘,再到边缘显示器,甚至是可折叠屏幕。Android正处于这个创新周期的中心,感谢数十亿设备的合作伙伴广泛的生态系统。Android帮助推动了硬件和软件的界限,带给用户全新的体验和功能。

随着移动生态系统的发展,Android着重于帮助用户利用最新的创新,确保用户的安全和隐私始终是首要任务,在像Google Pley Protect和运行时权限的基础上构建。Android Q 带来了额外的隐私和安全功能给用户,以及增强可折叠,用于连接新的APIs,新的媒体解码器和相机功能,NNAPI扩展,Vulkan 1.1支持,更快的应用程序启动,以及更多。

今天我们为早期采纳者发布了Android Q Beta 1 版本并为开发者发布SDK预览版。您今天可以通过注册任意Pixel设备(包括原版的Pixel和Pixel XL,我们通过大众需求扩大了支持!)请让我们知道您的想法!,继续阅读,了解Android Q中的内容,我们将在5月份的Google I / O上看到您,我们将分享更多内容。

建立在Android的隐私保护之上

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

给用户更多的位置控制

使用Android Q,操作系统帮助用户更好地控制应用程序何时可以获得位置。就像之前的操作系统版本一样,应用程序只有在请求你的权限并得到你的许可后才能获得位置信息。

特别敏感的一件事是,应用程序在不使用的情况下(在后台)访问位置。Android Q 允许用户永远不允许应用程序查看自己的位置,只在应用程序正在使用(运行)或一直在使用(后台)时才允许。

android_q_loc_dialog

例如,一个应用程序询问用户食品配送的位置是有意义的,用户可能希望授予它这样做的能力。但由于应用程序可能不需要当前正在使用的位置之外的位置,用户可能不想授予该访问权限。Android Q现在提供了更高级别的控制。请阅读开发人员指南,了解有关如何使应用程序适应此新控件的详细信息。期待更多以用户为中心的改进出现在即将到来的beta中。我们的目标是非常敏感地,始终为开发人员提供尽可能多的通知和支持。

Android Q中更多的隐私保护

除了位置的改变,我们还在进行进一步的更新,以确保透明度、用户控制权和个人数据的安全。

在Android Q 中,该操作系统让用户对应用程序有了更多的控制,控制对共享文件的访问。用户将能够通过新的运行时权限控制应用程序对照片、视频或音频集合的访问。对于下载,应用程序必须使用系统文件选择器,这允许用户决定应用程序可以访问哪些下载文件。对于开发人员来说,您的应用程序如何在外部存储上使用共享区域有一些变化。请确保阅读作用域存储(Scoped Storage)更改以获得详细信息。

我们还看到,当一个应用程序意外地跳到前台并占据焦点时,用户(和开发人员)会感到不安。为了减少这些干扰,Android Q将阻止应用程序在后台启动活动。如果你的应用程序在后台,需要迅速吸引用户的注意力——比如来电或闹钟——你可以使用高优先级通知,并提供全屏意图。有关更多信息,请参阅文档

我们限制对不可重置设备标识符的访问,包括设备IMEI、序列号和类似标识符。阅读最佳实践,以帮助您为用例选择正确的标识符,并在这里查看详细信息。在默认情况下,当连接到不同的Wi-Fi网络时,我们还会随机设置设备的MAC地址——这在Android 9 Pie中是可选的。

我们提前把这些变化告诉你,这样你就可以有尽可能多的时间来准备。我们还努力为开发人员预先提供详细的信息,我们建议查看关于隐私更改的详细文档,并立即开始测试。

吸引用户的新方式

在Android Q中,我们启用了新的方式将用户带入你的应用程序,并在他们从其他应用程序过渡时简化体验。

折叠和创新的新屏幕

可折叠设备开辟了一些创新的经验和用例。为了帮助你的应用程序更好地利用这些和其他大屏幕设备,我们在Android Q中做了很多改进,包括onResume和onPause的改变,以支持多简历,并在你的应用程序有焦点时通知你。我们还更改了resizeableActivity manifest属性的工作方式,以帮助您管理应用程序在可折叠和大屏幕上的显示方式。为了让您开始在这些新设备上构建和测试,我们一直在努力更新Android模拟器,以支持多显示器类型切换——更多细节即将公布!

android_q_map

分享快捷键

当用户想在另一个应用程序中与他人分享照片等内容时,过程应该很快。在Android Q中,我们通过共享快捷方式让这一过程变得更快更简单,用户可以直接跳转到另一个应用程序来共享内容。开发人员可以发布共享目标,这些目标在应用程序中启动带有附加内容的特定活动,并在共享UI中显示给用户。因为它们是预先发布的,所以可以在启动时立即加载共享UI。

android_q_share

共享快捷方式机制类似于应用程序快捷方式的工作方式,因此我们扩展了ShortcutInfo API,以便更容易地集成这两个功能。新的ShareTarget AndroidX库也支持这个新的API。这允许应用程序使用新功能,同时允许pre-Q设备使用直接共享。您可以在这里找到带有源代码的早期示例应用程序。

设置面板

现在,您还可以通过一个新的设置面板API在应用程序上下文中直接显示关键系统设置,该API利用了我们在Android 9 Pie中引入的slice特性。

设置面板是一个浮动的UI,您可以从应用程序中调用它来显示用户可能需要的系统设置,比如internet连接、NFC和音频音量。例如,浏览器可以显示带有连接设置的面板,如飞机模式、Wi-Fi(包括附近的网络)和移动数据。没有必要离开应用程序;用户可以根据需要从面板管理设置。要显示设置面板,只需使用Settings.Panel actions其中一个新设置触发一个intent

连接

在Android Q中,我们扩展了您的应用程序可以使用Android的连接堆栈并添加新的连接API。

android_q_connect

连接权限、隐私和安全性

大多数用于扫描网络的api已经需要粗位置权限,但在Android Q 中,对于蓝牙、蜂窝网络和Wi-Fi,我们正在通过要求精细位置权限来增强对这些api的保护。如果你的应用只需要建立点对点连接或推荐网络,看看下面改进的Wi-Fi api——它们简化了连接,不需要位置许可。

除了Android Q在连接不同Wi-Fi网络时提供的随机MAC地址,我们还增加了新的Wi-Fi标准支持WP3和OWE,以提高家庭和工作网络以及开放/公共网络的安全性。

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

在Android Q中,我们重构了Wi-Fi堆栈,以改善隐私和性能,但也改善了常见的用例,比如管理物联网设备和建议互联网连接——不需要位置许可。

网络连接api使得通过本地Wi-Fi管理物联网设备变得更加容易,可以实现配置、下载或打印等对等功能。应用程序通过指定首选的ssid和bssid作为WiFiNetworkSpecifiers间接启动连接请求。该平台自己处理Wi-Fi扫描,并在Wi-Fi选择器中显示匹配的网络。当用户选择时,平台会自动设置连接。

网络建议api允许应用程序在互联网连接方面显示用户更喜欢的Wi-Fi网络。应用程序通过提供网络和证书列表作为WifiNetworkSuggestion来间接启动连接。该平台将基于过去的性能无缝连接时,在这些网络范围。

Wi-Fi 性能模式

现在你可以在Android Q中通过启用高性能和低延迟模式来请求自适应Wi-Fi。在低延迟对用户体验非常重要的情况下,如实时游戏、活动语音呼叫和类似的用例,这些将非常有用。

要使用新的性能模式,请使用WIFI_MODE_FULL_LOW_LATENCY或WIFI_MODE_FULL_HIGH_PERF调用WifiManager.WifiLock.createWifiLock())。在这些模式下,平台与设备固件协同工作,以满足功耗最低的要求。

相机、媒体、图形

动态深度格式的照片

许多移动设备上的相机可以通过模糊前景或背景来模拟较窄的景深。它们为图像中的不同点捕获深度元数据,并对图像应用静态模糊,然后丢弃深度元数据。

从Android Q开始,应用程序可以请求一个动态深度图像,该图像由一个JPEG、XMP元数据(与深度相关的元素相关)和一个深度和置信度地图组成,这些数据嵌入到宣传支持的设备的同一个文件中。

要求JPEG +动态深度图像可以让你在你的应用程序中提供专门的模糊和bokeh选项。你甚至可以使用这些数据来创建3D图像或支持AR摄影用例。我们正在使动态深度成为生态系统的一种开放格式,我们正在与我们的设备制造商合作伙伴合作,使其在运行Android Q及更高版本的设备上可用。

q_depth_image_x.jpg

q_depth_image_xx.jpg

q_depth_image_xxx.jpg

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

新的音频和视频编解码器

Android Q引入了对开源视频编解码器AV1的支持。这使得媒体供应商可以用更少的带宽向Android设备传输高质量的视频内容。此外,Android Q支持使用Opus进行音频编码,Opus是一种针对语音和音乐流媒体进行优化的编解码器,HDR10+用于支持Opus的设备上的高动态范围视频。

MediaCodecInfo API引入了一种更简单的方法来确定Android设备的视频呈现能力。对于任何给定的编解码器,都可以使用VideoCodecCapabilities.getSupportedPerformancePoints()获得支持的大小和帧速率列表。这允许您选择在任何给定设备上呈现的最佳质量的视频内容。

Vulkan上的ANGLE

为了使游戏和图形开发人员更加一致,我们正在为所有基于Vulkan的设备开发一个标准的、可更新的OpenGL驱动程序。在Android Q中,我们在Android设备的Vulkan之上添加了对ANGLE的实验性支持。ANGLE是一个图形抽象层,用于实现高性能的OpenGL兼容性。通过angular,许多使用OpenGL ES的应用程序和游戏都可以利用Vulkan的性能和稳定性,并从Android设备上对ES的一致、独立于供应商的实现中获益。在Android Q中,我们计划支持OpenGL ES 2.0,下一步将支持ES 3.0。

我们将使用更多OpenGL功能、bug修复和性能优化来扩展实现。有关Android中当前角度支持的详细信息,如何使用它,以及我们未来的计划,请参阅文档。您可以通过“设置”中的“开发人员选项”选择我们的初始支持来开始测试。今天就试试吧!

Vulkan 无处不在

我们正在继续扩大Vulkan对Android的影响,我们为高性能3D图形实现了低开销、跨平台的API。我们的目标是使Android上的Vulkan成为一个广泛支持的、一致的图形开发人员API。我们正在与我们的设备制造商合作伙伴共同努力,使Vulkan 1.1成为所有运行Android Q或更高版本的64位设备的要求,并成为所有32位设备的推荐标准。未来,这将有助于为应用程序和游戏提供统一的高性能图形API。

神经网络 API 1.2

自2017年推出神经网络API (NNAPI)以来,我们继续扩大支持的操作数量,并改进现有功能。在Android Q中,我们增加了60个新操作,包括ARGMAX, ARGMIN,量化LSTM,以及一系列的性能优化。这为加速更大范围的模型奠定了基础,比如用于目标检测和图像分割的模型。我们正在与硬件供应商和流行的机器学习框架(如TensorFlow)合作,优化和推出对NNAPI 1.2的支持。

Android基础的加强

ART 性能

Android Q对ART运行时进行了几项新的改进,帮助应用程序更快地启动并消耗更少的内存,而不需要开发人员做任何工作。

自Android Nougat以来,ART提供了Profile Guided Optimization (PGO),它通过识别和预编译代码中经常执行的部分,随着时间的推移加快了应用程序的启动速度。为了帮助最初的应用程序启动,谷歌Play现在提供了基于云的配置文件和apk。这些都是匿名的、聚合的艺术配置文件,可以让艺术在应用程序运行之前预先编译应用程序的某些部分,从而为整个优化过程提供了一个重要的起点。基于云的配置文件对所有应用程序都有好处,而且运行Android P或更高版本的设备已经可以使用这些配置文件。

android_q_art

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

应用安全

BiometricPrompt是我们的统一认证框架,支持系统级的生物识别。在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。我们知道将您的应用程序从非sdk api中移除需要时间,所以我们提前通知您

在Android Q中,我们限制了对更多非sdk接口的访问,并要求您使用公共接口。为了帮助您进行转换并防止您的应用程序崩溃,我们只在您的应用程序针对Android q时启用这些限制。我们将根据您的请求继续添加公共替代api;如果没有符合您用例的公共API,请让我们知道

测试应用程序是否使用非sdk接口非常重要。我们建议使用StrictMode方法detectNonSdkApiUsage())在应用程序通过反射或JNI访问非sdk api时发出警告。即使api此时被豁免(灰色列表),最好还是为将来做好计划,并消除对它们的使用,以减少兼容性问题。有关Android Q中限制的更多细节,请参阅开发人员指南

现代化安卓

我们正在努力让所有应用程序充分利用最新版本Android的安全和性能特性。今年晚些时候,谷歌Play将要求你在新应用和更新中把应用的targetSdkVersion设置为28 (Android 9 Pie)。根据这些变化,Android Q将在用户首次运行针对API级别23 (Android Marshmallow)之前的平台的应用程序时,用对话框警告用户。下面是帮助您迁移应用程序的资源清单

我们还在推动生态系统为64位设备做好准备。今年晚些时候,谷歌Play将要求所有应用程序都支持64位。如果您的应用程序使用本地sdk或库,请记住,您需要提供这些sdk或库的64位兼容版本。有关如何准备的详细信息,请参阅开发人员指南

开始使用Android Q测试版

对于可能影响您的应用程序的重要隐私特性,我们建议您立即开始测试。特别是,您希望启用和测试Android Q存储更改、新位置权限状态、后台应用程序启动的限制和设备标识符的限制。有关详细信息,请参阅隐私文档

首先,只需将您当前的应用程序从谷歌Play安装到运行Android Q Beta版的设备或Android虚拟设备上,并处理用户流。该应用程序应该运行良好,看起来很棒,并正确处理所有应用程序的Android Q行为变化。如果你发现问题,我们建议你在当前的应用程序中修复它们,而不改变你的目标水平。查看迁移指南中的步骤和建议的时间线。

探索新特性和api

当你准备好了,深入Android Q,了解你可以在你的应用程序中使用的新功能和api。以API diff报告、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测试版?

这很简单——你可以在这里注册,在任何像素设备上通过无线方式获得Android Q Beta更新(今年我们支持所有三代Pixel—Pixel3、Pixel2,甚至原始Pixel!)还可以下载这些设备的系统映像。如果没有Pixel设备,可以使用Android模拟器,并通过Android Studio中的SDK Manager下载最新的模拟器系统镜像。

我们计划在整个预览过程中定期更新预览系统图像和SDK。随着Beta版程序的推进,我们将有更多的功能可以分享。

一如既往,你的反馈是至关重要的,所以请让我们知道你的想法——我们越早收到你的反馈,我们就能整合更多的反馈。当您发现问题时,请在这里报告。我们有单独的热门列表来归档平台问题应用程序兼容性问题第三方SDK问题

以上是对Android官网博客文章的翻译,如果不足,欢迎指正,谢谢

if (本文对您有用) { Pay (请随意¥打赏) } else { Commit feedback (底部评论区提交建议、反馈) } 感谢支持!