1.Android Q 简介
2019年,移动创新比以往任何时候都更加强大,从5G到边缘到边缘显示器甚至可折叠屏幕的新技术。Android正处于这一创新周期的中心,并且由于数十亿设备的广泛合作伙伴生态系统,Android有助于突破硬件和软件的界限,为用户带来新的体验和功能。
随着移动生态系统的发展,Android专注于帮助用户利用最新的创新,同时确保用户的安全和隐私始终是首要任务。基于Google Play Protect和运行时权限等工作,Android Q为用户带来了许多额外的隐私和安全功能,以及可折叠的增强功能,用于连接的新API,新媒体编解码器和相机功能,NNAPI扩展,Vulkan 1.1支持,更快的应用启动等等。
2.Android Q 隐私保护
Android在中心设计了安全和隐私。随着Android的成熟,我们添加了一系列功能来保护用户,例如基于文件的加密,需要应用程序在访问敏感资源之前请求权限的操作系统控件,锁定相机/麦克风后台访问,锁定模式,加密备份,Google Play Protect(每天扫描超过500亿个应用以识别可能有害的应用并将其删除)等等。在Android Q中,我们进行了更多增强功能以保护用户。其中许多增强功能都是我们在Strobe项目中工作的一部分。
让用户更好地控制位置
借助Android Q,操作系统可帮助用户更好地控制应用何时获取位置信息。与以前版本的操作系统一样,只有在应用程序请求您许可后,应用程序才能获取位置,并且您已授予该权限。
一个特别敏感的事情是应用程序未使用时(在后台)应用程序访问位置。Android Q允许用户授予应用程序权限,以便永远不会看到他们的位置,仅在应用程序正在使用(运行)时,或始终(在后台)。
例如,要求用户的食物递送位置的应用程序是有意义的,并且用户可能想要授予它执行该操作的能力。但由于应用程序可能不需要位于当前正在使用的位置之外,因此用户可能不希望授予该访问权限。Android Q现在提供更高级别的控制。阅读开发人员指南,了解有关如何针对此新控件调整应用的详细信息。寻找即将到来的Betas中更多以用户为中心的改进。与此同时,我们的目标是非常敏感,始终通过这些更改尽可能多地给予开发人员注意和支持。
Android Q中的更多隐私保护
除了位置变化之外,我们还会进行进一步的更新,以确保透明度,让用户控制并保护个人数据。
在Android Q中,操作系统使用户可以更好地控制应用程序,控制对共享文件的访问。用户将能够通过新的运行时权限控制应用程序对照片和视频或音频集合的访问。对于下载,应用必须使用系统文件选择器,允许用户决定应用可以访问哪些下载文件。对于开发人员,应用程序可以在外部存储上使用共享区域的方式发生了变化。请务必阅读Scoped Storage更改以获取详细信息。
我们还看到,当应用程序意外跳转到前台并重新关注时,用户(和开发人员!)会感到不安。为了减少这些中断,Android Q将阻止应用在后台启动活动。如果您的应用程序处于后台并且需要快速引起用户的注意 - 例如来电或闹钟 - 您可以使用高优先级通知并提供全屏意图。有关更多信息,请参阅文档。
我们限制访问不可重置的设备标识符,包括设备IMEI,序列号和类似标识符。阅读最佳实践以帮助您为用例选择正确的标识符,并在此处查看详细信息。我们还默认连接到不同的Wi-Fi网络时随机化设备的MAC地址 - 这是Android 9 Pie中可选的设置。
我们会尽早为您提供这些更改,因此您可以尽可能多地准备时间。我们还努力为开发人员提供详细的信息,我们建议您查看有关隐私更改的详细文档,并立即开始测试。
吸引用户的新方法
在Android Q中,我们正在启用新方法,将用户引入您的应用,并在从其他应用转换时简化体验。
3.Android Q兼容折叠屏
可折叠设备开辟了一些创新体验和用例。为了帮助您的应用利用这些和其他大屏幕设备,我们在Android Q中进行了一些改进,包括对onResume和onPause的更改,以支持多重简历,并在重点关注时通知您的应用。我们还更改了resizeableActivity清单属性的工作方式,以帮助您管理应用在可折叠和大屏幕上的显示方式。为了开始构建和测试这些新设备,我们一直在努力更新Android Emulator以支持多显示器类型切换 - 更多细节即将推出!
4.Android Q 分享功能新样式
当用户想要与另一个应用中的某人共享照片等内容时,该过程应该很快。在Android Q中,我们使用“共享快捷方式”让用户更快更轻松,这样用户就可以直接跳转到另一个应用程序来共享内容。开发人员可以发布在其应用中添加内容的特定活动的共享目标,并在共享UI中向用户显示这些目标。因为它们是预先发布的,所以共享UI可以在启动时立即加载。
共享快捷方式机制类似于应用程序快捷方式的工作方式,因此我们扩展了ShortcutInfo API,使两个功能的集成更加容易。新的ShareTarget AndroidX库也支持这个新的API。这允许应用程序使用新功能,同时允许pre-Q设备使用Direct Share工作。您可以在此处找到包含源代码的早期示例应用。
5.Android Q更新 设置功能
您现在还可以通过新的设置面板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_LATENCY``WIFI_MODE_FULL_HIGH_PERF
6.Android Q 更新Media
照片的动态深度格式
移动设备上的许多相机可以通过模糊相对于主体的前景或背景来模拟窄景深。它们捕获图像中各个点的深度元数据,并对图像应用静态模糊,然后丢弃深度元数据。
从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消息的低延迟处理。试试这里的示例应用程序和源代码吧。
关于Vulkan的角度
为了使游戏和图形开发人员更加一致,我们正在为Vulkan上构建的所有设备开发标准的,可更新的OpenGL驱动程序。在Android Q中,我们在Android设备上的Vulkan上添加了对ANGLE的实验性支持。ANGLE是一个图形抽象层,旨在实现跨实现的高性能OpenGL兼容性。通过ANGLE,使用OpenGL ES的许多应用程序和游戏可以充分利用Vulkan的性能和稳定性,并从Android设备上一致的,独立于供应商的ES实施中受益。在Android Q中,我们计划在路线图中支持OpenGL ES 2.0,ES 3.0。
我们将通过更多OpenGL功能,错误修复和性能优化来扩展实现。有关Android当前ANGLE支持,如何使用以及我们未来计划的详细信息,请参阅文档。您可以通过选择“设置”中的开发人员选项来开始使用我们的初始支持进行测试。今天试一试!
到处都是Vulkan
我们将继续扩大Vulkan对Android 的影响,这是我们为高性能3D图形实现的低开销,跨平台API。我们的目标是让Android上的Vulkan成为广泛支持且一致的图形开发人员API。我们正与我们的设备制造商合作伙伴共同努力,使Vulkan 1.1成为运行Android Q及更高版本的所有64位设备的要求,并推荐所有32位设备。展望未来,这将有助于为应用和游戏提供统一的高性能图形API。
7.Android Q 优化神经网络API 1.2
自2017年引入神经网络API(NNAPI)以来,我们不断扩展支持的操作数量并改进现有功能。在Android Q中,我们添加了60个新操作,包括ARGMAX,ARGMIN,量化LSTM,以及一系列性能优化。这为加速更大范围的模型奠定了基础 - 例如用于物体检测和图像分割的模型。我们正在与硬件供应商和流行的机器学习框架(如TensorFlow)合作,以优化和推出对NNAPI 1.2的支持。
8.Android Q 优化Android 基础功能
ART表现
Android Q引入了ART运行时的几项新改进,可帮助应用程序更快地启动并消耗更少的内存,而无需开发人员的任何工作。
自Android Nougat以来,ART提供了配置文件引导优化(PGO),它通过识别和预编译代码中经常执行的部分来加速应用程序启动。为了帮助初始应用启动,Google Play现在提供基于云的配置文件以及APK。这些是匿名的聚合ART配置文件,让ART在应用程序运行之前预编译部分应用程序,从而为整个优化过程提供了重要的启动。基于云的配置文件使所有应用程序受益,并且它们已经可用于运行Android P及更高版本的设备。
我们还在继续改进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
我们正在努力让所有应用程序充分利用最新版Android中的安全性和性能功能。今年晚些时候,Google Play会要求您在新的应用和更新中将应用的targetSdkVersion设置为28(Android 9 Pie)。根据这些更改,Android Q会在用户首次运行面向API级别23(Android Marshmallow)之前的平台的应用时向用户发出警告。以下是帮助您迁移应用的资源清单。
我们还将生态系统推向了64位设备的准备状态。今年晚些时候,Google Play将需要在所有应用中支持64位。如果您的应用使用原生SDK或库,请记住,您需要提供这些SDK或库的64位兼容版本。有关如何做好准备的详细信息,请参阅开发人员指南。
开始使用Android Q Beta
由于可能会影响您的应用的重要隐私功能,我们建议您立即开始测试。特别是,您需要启用和测试Android Q存储更改,新位置权限状态,后台应用启动限制以及设备标识符限制。有关详细信息, 请参阅隐私文档
要开始使用,只需将您当前的应用从Google Play安装到运行Android Q Beta 的设备或Android虚拟设备上,然后完成用户流程。该应用应该运行并且看起来很棒,并且正确处理所有应用的Android Q 行为更改。如果您发现问题,我们建议您在当前应用中修复它们,而不会更改定位级别。请查看有关步骤和建议时间表的迁移指南。
接下来,尽快将应用的targetSdkVersion更新为“Q”。这使您可以使用Android Q中的所有隐私和安全功能测试您的应用,以及针对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 Beta?
这很容易 - 您可以在这里注册以在任何Pixel设备上通过无线方式获得Android Q Beta更新(今年我们支持所有三代Pixel - Pixel 3,Pixel 2,甚至是原始的Pixel! )。这些设备的可下载系统映像也可用。如果您没有Pixel设备,可以使用Android Emulator,并通过Android Studio中的SDK Manager下载最新的仿真器系统映像。
我们计划在整个预览期间定期更新预览系统图像和SDK。随着Beta计划的推进,我们将有更多功能可供分享。
一如既往,您的反馈非常重要,请告诉我们您的想法 - 我们越早听到您的意见,我们就可以整合您的反馈意见。当您发现问题时,请在此处报告。我们有单独的热门列表来提交平台问题,应用程序兼容性问题和第三方SDK问题。