在 Android 11 的首个开发者预览版发布将近 1 年后,今天谷歌发布了 Android12 的首个开发者预览版。由于开发团队以及合作伙伴受到疫情的影响,谷歌推迟了 Android11 的正式发布时间,但看起来谷歌还是按照既定的路线图更新 Android12。
在Android 12中,我们还致力于为您提供新工具,以为用户打造出色的体验。首先从兼容的媒体转码之类的东西开始,它可以帮助您的应用使用最新的视频格式(如果您尚不支持它们),以及轻松地将丰富的内容(例如图像和视频)复制/粘贴到您的应用中。我们还将添加隐私保护并优化性能,以使您的应用程序保持及时响应。
今天的第一个预览仅仅是Android 12的开始,在发布过程中,我们还有很多分享的余地。继续阅读以了解Android 12的新功能,并访问Android 12开发人员网站,以获取有关Pixel下载和发布时间表的详细信息。与往常一样,至关重要的是尽早获得您的反馈,以帮助我们将其纳入最终产品,因此请让我们知道您的想法!
除了我们在Android 12中所做的工作之外,本月晚些时候,我们还将分享更多可帮助您更轻松地创建出色用户体验的重要工具:Jetpack Compose,这是用于构建本机UI的现代工具包。与我们一起在#TheAndroidShow上观看2月24日上午9点现场直播的Jetpack Compose幕后花絮,并使用#TheAndroidShow在推特上发布您的Jetpack Compose问题,以在节目中现场回答。
信任与安全
隐私是我们所做工作的核心,在Android 12中,我们将继续专注于为用户提供更高的透明度和控制权,同时又确保其设备和数据的安全。在今天的版本中,我们添加了可用于跟踪的标识符的新控件,更安全的应用程序组件默认值等。这些更改可能会影响您的应用程序,因此我们建议尽快进行测试。请注意以后的预览版本中将提供更多的隐私和安全功能。
WebView中的现代SameSite cookie行为-与Chrome和其他浏览器的更改一致,WebView包括新的SameSite cookie行为,以提供额外的安全性和隐私性,并为用户提供更高的透明度并控制如何跨站点使用cookie。这里更多。
受限的Netlink MAC-我们将继续帮助开发人员迁移到保护隐私的可重置标识符。为了简化设备范围的Netlink MAC的迁移,我们进行了多次发布,在Android 11中,我们根据API级别30限制了对它的访问,而在Android 12中,我们将限制应用于所有应用程序-无论targetSDK级别如何。这里更多。
更安全地导出组件-为了防止应用程序意外导出活动,服务和接收者,我们将android:exported属性的默认处理方式更改为更加明确。进行此更改后,声明一个或多个意图过滤器的组件现在必须显式声明android:exported属性。您应该检查清单中的组件,以避免与此更改相关的安装错误。这里更多。
更安全地处理Intent-为了使PendingIntent的处理更加安全,Android 12要求应用为每个PendingIntent显式声明一个可变性标志,即FLAG_MUTABLE或新的FLAG_IMMUTABLE。这里更多。
您可以在此处阅读有关这些以及其他隐私和安全性更改的更多信息。
更好的用户体验工具
在Android 12中,我们正在关键领域进行投资,以帮助为用户提供出色的体验和更好的性能。这是到目前为止的一些更新。
兼容的媒体转码-随着HEVC硬件编码器在移动设备上的普及,相机应用正越来越多地以HEVC格式捕获,与旧编解码器相比,它在质量和压缩方面提供了显着改进。大多数应用应支持HEVC,但对于不支持HEVC的应用,我们将引入兼容的媒体转码。
借助此功能,不支持HEVC的应用程序可以使平台自动将文件转码为AVC(一种广泛兼容的格式)。转码过程需要时间,具体取决于设备的视频和硬件属性。例如,以30fps播放一分钟的1080p视频大约需要9秒钟才能在Pixel 4上进行转码。您可以通过声明您的应用不支持的媒体格式来选择使用转码服务。对于开发人员,我们强烈建议您的应用程序支持HEVC,如果无法实现,请启用兼容的媒体转码。该功能将在所有使用HEVC格式进行视频捕获的设备上激活。我们很想听听您对此功能的反馈。这里更多。
AVIF图像支持-为了为您提供更高的图像质量和更有效的压缩,Android 12引入了对AV1图像文件格式(AVIF)的平台支持。AVIF是用于使用AV1编码的图像和图像序列的容器格式。与其他现代图像格式一样,AVIF利用了视频压缩中的帧内编码内容。与JPEG等较旧的图像格式相比,这可以显着提高相同文件大小的图像质量。
AVIF(18.2kB)JPEG(20.7kB)
前台服务优化-前台服务是应用程序管理某些类型的面向用户任务的重要方式,但是如果过度使用,它们可能会影响性能,甚至导致应用程序中断。为了确保为用户带来更好的体验,对于以新平台为目标的应用,我们将从后台阻止前台服务启动。为了更轻松地从此模式过渡,我们在JobScheduler中引入了一个新的加急作业,该作业获得了较高的进程优先级,网络访问权限,并且可以在不考虑节电或节电的情况下立即运行。为了实现向后兼容,我们还在最新版本的Jetpack WorkManager库中内置了加急作业。。另外,为了减少用户的注意力,我们现在将某些前台服务通知的显示延迟最多10秒钟。这使短暂的任务有机会在显示通知之前完成。这里更多。
丰富的内容插入-用户喜欢图像,视频和其他表达性内容,但是在应用程序中插入和移动此内容并不总是那么容易。为了使您的应用轻松接收丰富的内容,我们引入了一个新的统一API,该API可让您接受来自任何来源的内容:剪贴板,键盘或拖放。您可以将新接口OnReceiveContentListener附加到UI组件,并在通过任何机制插入内容时获得回调。此回调成为代码处理所有内容(从纯文本和样式文本到标记,图像,视频,音频文件等)的唯一位置。为了实现向后兼容,我们向AndroidX添加了统一的API 。这里更多。
声耦合触觉效果-在Android 12中,应用程序可以通过手机的振动器提供声耦合触觉反馈。振动强度和频率来自音频会话,使您可以创建更身临其境的游戏和音频体验。例如,视频通话应用程序可以使用自定义铃声通过触觉反馈来识别呼叫者,或者您可以在赛车游戏中模拟崎terrain的地形。这里更多。
多声道音频-Android 12包括对具有空间信息的音频的多项增强。它增加了对在直通和卸载模式下MPEG-H播放的支持,并且音频混音器,重采样器和效果已针对多达24个通道进行了优化(以前的最大数量为8个)。
用于手势导航的沉浸模式API的改进-我们简化了沉浸模式,例如在观看视频,看书或玩游戏时,手势导航更轻松,更一致。在与游戏相关的全屏体验中,但在所有其他全屏或身临其境的体验(例如,视频查看器,阅读,图片库)中,我们仍在保护应用程序免受意外手势的伤害,对于以新平台为目标的应用程序,更改默认设置,以允许用户一次滑动即可浏览手机。这里更多。
通知用户界面更新-我们正在刷新通知设计,以使其更现代,更易于使用且功能更强大。在第一个预览中,您会注意到从抽屉和控件到模板本身的更改。我们还在整个系统上优化转场和动画,以使其更加流畅。作为更新的一部分,对于针对Android 12的应用,我们将使用带有图标的自定义内容来修饰通知,并扩展功能以匹配所有其他通知。这里更多。
更快,响应更快的通知-用户点击通知时,他们希望立即跳入应用程序-速度越快越好。为了满足这一期望,开发人员应确保通知点击触发活动直接启动,而不是使用“蹦床”(中间广播接收器或服务)来启动活动。通知蹦床会导致严重的延误并影响用户体验。为了保持通知的响应速度,Android 12将阻止通知蹦床启动目标活动,以阻止它们,我们要求开发人员从此模式迁移。所做的更改仅适用于以新平台为目标的应用程序,但是对于所有应用程序,我们将显示祝酒词,以使蹦床和您和用户可见。这里更多。
改进的Binder IPC呼叫-作为性能研究的一部分,我们一直致力于降低系统可变性。我们研究了延迟和工作负载分配,并进行了优化,以减少后端的平均体验或99%的用例。为此,我们的目标是改进系统绑定程序调用,添加轻量级缓存策略,并专注于删除锁争用以改善延迟分配。总体而言,这使Binder调用的性能提高了大约2倍,具体调用得到了显着改善,例如,分别提高了47倍refContentProvider()
,15英寸releaseWakeLock()
和7.9英寸JobScheduler.schedule()
。
应用程式相容性
在推出新的平台版本时,我们通过优先考虑应用程序兼容性来努力使更新更快,更流畅。在Android 12中,我们选择了大多数面向应用程序的更改,以便为您提供更多时间,并且我们更新了工具和流程,以帮助您早日做好准备。我们还为Google Play系统更新添加了新功能,以在Android 12设备上为您的应用提供更好的环境。
通过Google Play更新了更多的Android-我们将继续扩大对Google Play系统更新(项目主线)的投资,以为应用程序在设备之间提供更一致,更安全的环境。在Android 12中,我们添加了Android运行时(ART)模块,该模块可让我们将更新推送到运行Android 12的设备上的核心运行时和库。我们可以提高运行时性能和正确性,更有效地管理内存,并使Kotlin操作更快-所有这些都不需要完整的系统更新。我们还扩展了现有模块的功能-例如,我们正在可更新的模块内提供兼容的媒体转码功能。
针对平板电脑,可折叠设备和电视进行优化-越来越多的人在可折叠设备,平板电脑和电视等大屏幕设备上使用应用程序,现在是确保您的应用程序或游戏准备就绪的好时机。通过优化平板电脑和构建可折叠应用程序开始使用。而且,对于家庭中最大的屏幕,还提供了适用于Android TV的首个Android 12预览版。除了通过此预览将最新的Android功能带到电视上之外,您还可以在全新的Google TV体验上测试您的应用。在Android TV Developers网站上了解更多信息,并开始使用ADT-3开发人员工具包。
非SDK接口的更新列表-我们限制了其他非SDK接口,并且一如既往地欢迎您提供反馈和对公共API等效项的请求。
更轻松地测试和调试更改-为了使您能够更轻松地测试可能影响应用程序的选择更改,我们将许多更改设置为可切换。通过切换按钮,您可以分别从开发人员选项或adb强制启用或禁用更改。在此处查看详细信息。
应用程序兼容性在“开发人员选项”中切换。
平台稳定性里程碑-与去年一样,我们会提前告知您平台稳定性里程碑,以便您有更多时间计划应用程序兼容性工作。在这个里程碑上,我们将不仅提供最终的SDK / NDK API,而且还将提供最终的内部API和面向应用程序的系统行为。我们预计将在2021年8月达到平台稳定性,并且您需要在正式发布之前几周的时间进行最终测试。发布时间表的详细信息在这里。
开始使用Android 12
开发人员预览版提供了尝试Android 12功能,测试您的应用并向我们提供反馈所需的一切。您可以立即通过将设备系统映像刷新到Pixel 3/3 XL,Pixel 3a / 3a XL,Pixel 4/4 XL,Pixel 4a / 4a 5G或Pixel 5设备开始使用。如果没有Pixel设备,则可以将64位系统映像与Android Studio中的Android仿真器一起使用。
当你设置了,这里有一些你应该做的事情:
- 尝试新功能和API-在开发者预览的早期,您的反馈至关重要。在我们的跟踪器中报告问题,或者通过对“反馈和请求”页面中的选定功能进行调查,为我们提供直接反馈。
- 测试您当前的应用程序的兼容性-这里的目标是了解您的应用程序是否受Android 12中默认行为更改的影响。只需将您当前发布的应用程序安装到运行Android 12的设备或模拟器上,然后进行测试。
- 通过选择加入更改来测试您的应用-Android 12的选择加入行为更改仅在针对新平台的情况下影响您的应用。尽早理解和评估这些变化非常重要。为了使测试更容易,您可以单独打开和关闭更改。
我们将在整个Android 12发布周期中定期更新预览系统图像和SDK。此初始预览版本仅适用于开发人员,不适合日常或消费者使用,因此我们仅通过手动下载即可提供。您可以将出厂映像刷新到Pixel设备,也可以将OTA映像侧面加载到运行Android 11的Pixel设备,在这种情况下,您无需解锁引导加载程序或擦除数据。无论哪种方式,一旦您手动安装了预览版本,您都将通过无线方式自动获取将来所有以后的预览版和Beta版的更新。这里更多。
随着我们逐渐接近最终产品,我们将邀请消费者也进行尝试,并且届时我们将通过Android Beta开放注册。请继续关注详细信息,但现在请注意,Android 12当前不支持Android Beta。
Android 12 中提供的新 API 和功能
Android 12 面向开发者引入了一些出色的新功能和 API。以下几部分内容可帮助您了解适用于您的应用的功能并开始使用相关 API。
有关新增、修改和移除的 API 的详细列表,请参阅 API 差异报告。如需详细了解新的 API,请访问 Android API 参考文档 - 新 API 会突出显示以方便查看。此外,如需了解平台变更可能会在哪些方面影响您的应用,请务必查看会影响以 Android 12 为目标平台的应用和所有应用的 Android 12 行为变更。
新体验
用于接收内容的统一 API
Android 12 引入了全新的统一 API,您可以从任何可用来源(剪贴板、键盘或拖放操作)接收富媒体内容。
用户喜欢图片、视频和其他富有表现力的内容,但在应用中插入和移动这些内容并非易事。为了使您的应用能够轻松接收富媒体内容,我们引入了全新的统一 API,便于您接受来自任何来源(剪贴板粘贴、键盘输入或拖放操作)的内容。
您可以向界面组件附加新接口 OnReceiveContentListener,并在通过任何机制插入内容时获得回调。此回调会成为您的代码处理接收所有内容(从纯文本和样式文本到标记、图片、视频、音频文件等)的唯一位置。
为了向后兼容以前的 Android 版本,我们还向 AndroidX 添加了新的 API(可在 Core 1.5.0-beta1 和 Appcompat 1.3.0-beta-01 中获得),我们建议您在实现此功能时使用该 API。
媒体
兼容的媒体转码
Android 12 可以自动将设备上录制的 HEVC(H.265) 和 HDR(HDR10 和 HDR10+)视频转码为 AVC (H.264),AVC (H.264) 是与标准播放器广泛兼容的格式。因此,当现代编解码器可用且不会影响与旧应用的兼容性时,便会利用现代编解码器。
对于在设备上创建的以下格式的内容,系统可以自动进行转码:
媒体格式 | XML 属性 | MediaFormat MIME 类型 |
HEVC (H.265) | HEVC | MediaFormat.MIMETYPE_VIDEO_HEVC |
HDR10 | HDR10 | MediaFeature.HdrType.HDR10 |
HDR10+ | HDR10Plus | MediaFeature.HdrType.HDR10_PLUS |
AVIF 图片支持
Android 12 引入了对使用 AV1 图片文件格式 (AVIF) 的图片的支持。AVIF 是一种使用 AV1 编码的图片和图片序列的容器格式。它利用了视频压缩的帧内编码内容。与以前的图片格式(例如 JPEG)相比,这种格式可显著提升相同文件大小下的图片质量。
从音频产生触感反馈效果
Android 12 应用可使用手机的振动器从音频会话产生触感反馈。这可让您获得更身临其境的游戏和音频体验。例如,触感反馈效果增强的铃声有助于识别来电者,或者赛车游戏可以模拟在崎岖地形驾驶的感觉。
如需了解详情,请参阅 HapticGenerator 参考文档。
动画 GIF 和 WebP 的原生 ImageDecoder 支持
在 Android 12 中,NDK ImageDecoder API 已进行了扩展,可以对使用以下文件格式的图片的所有帧和时间数据进行解码:动画 GIF 和动画 WebP 文件格式。在 Android 11 中引入该 API 时,该 API 仅从这些格式的动画中解码第一张图片。
使用 ImageDecoder
(而非第三方库)可进一步缩减 APK 大小,并从未来与安全性和性能相关的更新中受益。
如需详细了解该 API,请参阅 API 参考文档和 GitHub 上的示例。
安全性
在非 DPC 应用中提供设备属性验证
Android 12 扩展了一组应用,当这些应用生成新密钥时,可以验证认证证书中的设备属性。
自 Android 9(API 级别 28)起,使用 Keymaster 4.0 或更高版本的设备政策所有者 (DPO) 可以验证这些认证证书中的设备属性。从 Android 12 开始,任何以 Android 12 为目标平台的应用都可以使用 setDevicePropertiesAttestationIncluded() 方法执行此验证。
生成的设备属性包含以下 Build 字段:
BRAND
DEVICE
MANUFACTURER
MODEL
PRODUCT
连接性
Wi-Fi 感知 (NAN) 增强功能
Android 12 增强了 Wi-Fi 感知功能:
- 在搭载 Android 12 及更高版本的设备上,您可以使用 onServiceLost() 回调,以便在应用因服务停止或超出范围而导致已发现的服务丢失时收到提醒。
- 设置多个数据路径(NAN 数据路径)的方式将发生变化以提高效率。较低的版本使用 L2 消息功能来交换发起方的对等信息,由此导致了延迟。在搭载 Android 12 及更高版本的设备上,可以将响应方(服务器)配置为接受任何对等方,也就是说,它不需要预先知道发起方信息。这可加快数据路径启动,并只需一个网络请求即可实现多个点对点链接。
- 为了防止框架因资源不足而拒绝发现请求或连接请求,在搭载 Android 12 及更高版本的设备上,您可以调用 WifiAwareManager.getAvailableAwareResources()。通过此方法的返回值,您可以获得可用数据路径的数量、可用发布会话的数量以及可用的订阅会话数量。
有关完整信息,请访问Android 12开发人员网站。
参考链接:Android 12的第一个预览版 谷歌Android 12开发人员预览版