7x24快讯 ·

机器学习为核心,DeepMind助力谷歌开发的安卓 9「Pie」今日上线

今日,谷歌开发者博客宣布,经过 1 年多的开发和数月的测试,安卓 9「Pie」将正式面世。本文中,我们将介绍安卓新版本的所有新特点。

今年 5 月份,谷歌 I/O 大会宣布推出安卓 9,而后经过数月的测试,谷歌收获了大量的反馈。此外,还有小米、Oppo 等 7 家设备制造商也将测试版本放到了他们的旗舰设备上,使得谷歌能够从全球用户那里收集反馈信息。

今日,谷歌宣布将把安卓 9 的源代码放到安卓开源项目上(AOSP),开始在所有的谷歌 Piexl 手机上用安卓 9。据介绍,安卓 9 拥有的机器学习能力能让手机变得更智能、便利、个性化。对开发者而言,安卓 9 包含很多强化 APP 的新方法。

Android 9 包含什么?

以机器学习为核心的更智能的智能手机

Android 9 能根据你的喜好自动调整你的手机,让它更适合你。从帮助用户充分利用电池寿命,到任何时刻都能展现 app 中最佳部分,只要用户需要,Android 9 都能让这一切变得更顺畅、更持久。

自适应电池(Adaptive Battery)

?

?

谷歌与 DeepMind 合作开发了个名为 Adaptive Battery 的功能,该功能利用机器学习为用户最关心的应用优化系统资源。如果用户的 app 针对 Doze、App Standby 或 Background Limits 进行了优化,那 Adaptive Battery 可以立即开始运行。

Slice

通过在全屏应用体验之外启用互动,Slice 可以帮助用户更快地执行任务。它通过使用 UI 模板来实现这一点,这些模板从谷歌搜索应用中显示丰富、动态且交互的内容,之后还可以在 Google Assistant 等其他地方显示这些内容。

?

?

App Actions

App Actions 是一种提高 app 可见度和参与度的新方法。Actions 利用机器学习的优势,根据 app 的语义内容和用户语境,在合适时间将特定 app 的特定功能以快捷键的形式呈现给用户。

?

?

在接下来的几周,谷歌将分享更多关于注册 app 的细节,这样更多的 app 就可以授权给 App Actions,进而能响应用户需求并在多个谷歌和安卓界面运行。

文本分类与智能链接

谷歌扩展了用于识别内容或文本输入中实体的机器学习模型,已通过 TextClassifier API 支持更多类型,如日期和航班号。Smart Linkify 可以通过让 Linkify API 利用 TextClassifer 模型,提供包括快速文本填充选项等操作。Smart Linkify 同时还可以显着提高检测精度和性能。

Neural Networks 1.1

安卓 9 中包含了神经网络 API 的新版本,以扩展安卓对设备上机器学习加速的支持。具体来说,Neural Networks 1.1 加入了对 9 个新操作的支持——Pad、BatchToSpaceND、SpaceToBatchND、Transpose、Strided Slice、Mean、Div、Sub、Squeeze。通常利用这个 API 的方法是通过 TensorFlow Lite 来进行的。

最大限度地利用你的手机

谷歌宣称,新版本的安卓系统可以让你的智能手机变得更加聪明。但更重要的是,随着科技的发展,技术本身将逐渐隐藏在用户界面背后。在安卓 9 中,谷歌的开发者们已将 Android 的 UI 转变为更简单、更易于使用的形式——对于开发人员而言,这些改进有助于改善用户查找、使用和管理 app 的方式。

?

?

新系统导航

Android 9 引入了一个新系统导航,谷歌为此开发了一年多。新的设计使安卓的多任务处理更加简便,并且更容易发现 app。用户在手机上向上滑动,就可以查看最近使用的应用全屏预览,只需点击就可以跳转回其中一个 app。

Display cutout

现在你的 app 可以通过 Android 9 的显示切换功能充分利用最新的无边框屏幕。对于大多数应用来说,系统管理状态栏会将内容和切换功能分开,所以运行切换功能完全无障碍。如果有沉浸式内容,用户可以使用 display cutout APIs 来检查位置和切换形状并发送全屏请求。为了帮助开发和测试,谷歌添加了一个 Developer Option,可以在任何设备上模拟多个 cutout shapes。

?

?

带有沉浸式内容的 APP 可以使用显示切换功能在设备上全屏显示。

通知与智能回复

Android 9 使通知功能能有用且易操作。通知类 app 可以利用新的 MessagingStyle API 来显示对话、附上照片或标记,甚至还能提供智能回复。用户很快就可以利用 ML Kit 为 app 生成回复建议。

?

?

MessagingStyle 通知与对话和智能回复 [左],图像和标记 [右]。

文本放大

?

?

在 Android 9 中,谷歌添加了一个放大镜部件来提高用户选择文本的体验。放大镜部件允许用户通过可拖动窗口查看放大的文本,从而精确定位光标或者文本选择句柄。用户可将它添加到任何窗口视图中,这样就可以在自定义部件或自定义文本中使用它。除了文本放大,放大镜部件还可以为任何视图提供放大功能。

用户安全及隐私

生物特征提示

?

?

随着一系列用于身份验证的生物传感器的使用,不同类型的传感器和应用程序之间的体验变得更加一致。Android 9 引入了一个系统管理的对话框,提示用户输入任何支持的生物认证类型。应用程序不再需要构建自己的对话框,而是使用生物计量学提示 API(BiometricPrompt API)来显示标准系统对话框。除了指纹(包括显示器内传感器),API 还支持面部和虹膜认证。

如果你的应用程序正在绘制自己的指纹验证对话框,你应该尽快切换成使用生物计量学提示 API。

受保护确认

Android 9 引入了 Android 保护确认系统(Android Protected Confirmation),它使用可信执行环境(TEE)来保证给定的提示字符串被显示给用户确认。只有在用户确认成功后,TEE 才会签署提示字符串,然后应用程序可以验证该字符串。

加强对密钥的保护

谷歌添加了 StrongBox 作为一种新的密钥存储类型,为在具有独立 CPU、RAM 和安全闪存的防篡改硬件中提供密钥存储的设备提供 API 支持。你可以设置密钥是否应该由 KeyGenParameterSpec 中的 StrongBox 安全芯片保护。

通过 TLS 的域名系统

Android 9 通过 TLS 增加了对域名系统(DNS)的内置支持,如果网络的 DNS 服务器支持,它会自动将 DNS 查询升级到 TLS。用户可以在网络和互联网设置中以新的私有 DNS 模式通过 TLS 行为管理 DNS。执行自己的 DNS 查询的应用程序可以使用新的 API——link properties . isprivated nsactive() 来检查 DNS 模式。

默认 HTTPS

作为重要工作的一部分,Android 9 将所有网络通信从 cleartext(非加密 HTTP)移动到通过 TLS 加密(HTTPS)的网站,他们将修改默认的网络安全配置以阻止所有 cleartext 通信。用户现在需要通过 TLS 连接,除非明确地选择特定域的 cleartext。

基于编译器安全的 Mitigations

在 Android 9 中,谷歌已经扩展了编译器级 mitigations 的使用,并通过危险行为的运行时检测来强化平台。控制流完整性(Control Flow Integrity,CFI)技术有助于防止代码复用工具和代码执行。在 Android 9 中,谷歌已经极大地扩展了媒体框架和其它安全组件(如 NFC 和蓝牙)中对 CFI 的使用。在使用 LLVM 构建时,谷歌还在 Android 常用核心中引入了 CFI 核心支持。

此外,谷歌还扩展了整数溢出错误 sanitizers 的使用以缓解内存损坏和信息泄漏漏洞等问题。

用户隐私

Android 9 以多种方式保护隐私。该系统现在限制了麦克风、摄像头和空闲 app 中所有传感器的访问。当 app 的 UID 处于空闲时,麦克风和传感器都会停止报告。应用程序所用的摄像会断开连接,如果应用程序试图使用摄像头,会产生错误。大多数情况下,这些限制不应该为 app 引入新问题,但是还是建议用户从你的 app 中删除这些请求。

Android 9 还允许用户在获得 READ_PHONE_STATE 权限后访问平台的 build.serial 标识符。需要通过 Build.getSerial() 方法获得 build.serial 标识符。

相机、音频、图像方面的新体验

多摄像头 API 和其它拍照更新

使用 Android 9,你现在可以在支持多摄像头 API 的设备上同时打开来自两个或更多物理摄像头的流。在配备两个前置摄像头或两个后置摄像头的设备上,你可以实现单个摄像头无法实现的创新功能,例如无缝变焦、散景和立体视觉。API 还允许你调用逻辑或融合的摄像机流,该流可以在两个或多个摄像机之间自动切换。

相机的其它改进还包括新的会话参数(Session parameters)和表面共享(Surface sharing),前者有助于减少初始捕获期间的延迟,而后者允许相机客户端处理各种应用,而无需停止和启动相机流。谷歌还为基于显示的 flash support 添加了 API,并为 app 级图像稳定和特效添加了 OIS 时间戳。

HDR VP9 视频和 HEIF 图像压缩

Android 9 增加了对 HDR VP9 Profile 2 的内置支持,因此你现在可以在支持 HDR 的设备上向用户提供支持 HDR 的电影。

谷歌将 HEIF ( heic ) 图像编码添加到平台中。HEIF 是一种流行的照片格式,它改进了压缩方式以保存存储和网络数据。借助 Android 9 设备上的平台支持,从后端服务器发送和利用 HEIF 图像变得很容易。一旦确定你的应用程序与共享和显示的数据格式兼容,你可以尝试在应用程序中使用 HEIF 作为图像的存储格式。你可以使用 ImageDecoder 或 BitmapFactory 从 jpeg 获得位图来实现从 jpeg 到 heic 的转换,并且可以使用 AndroidX 库中的 HeifWriter 从 YUV 字节缓冲区、表面或位图写入 HEIF 静止图像。

通过动态处理增强音频

动态处理 API 允许你使用一种新的音频效果来隔离特定频率,降低声音或增加柔和声音,以提高 app 的音质。例如,你可以改善在嘈杂环境中说话声音不明显的人的声音。API 还允许你访问多级、多波段动态处理效果,包括预均衡器、多波段压缩器、后均衡器和链接限制器。

?

?

位图和绘图的图像解码器

图像解码器(ImageDecoder)API 为你提供了一种将图像解码为位图或绘图的更简便方法。你从字节缓冲区、文件或 URI 中创建位图或绘图。与 BitmapFactory 相比,API 提供了几个优势,包括对精确缩放的支持、对物理内存的单步解码、对解码后处理的支持以及对动画图像的解码。

连接和定位

用于室内导航的 Wi-Fi RTT

?

?

Android 9 可以让你通过 IEEE 802.11mc Wi-Fi 协议(即 Wi-Fi Round-Trip-Time,RTT)的平台支持构建室内导航功能到你的 app 上。在具备硬件支持、位置许可和位置启用的 Android 9 设备上,你的 app 可以使用 RTT API 来测量 Wi-Fi 接入点(AP)的距离。设备不需要连接 AP 来使用 RTT,并且为了保护隐私,只有手机可以确定距离,AP 不可以。

如果知道到 3 个或 3 个以上接入点的距离,就可以将设备位置的计算精确到 1 到 2 米。在这种精确度下,设备可以支持建筑物内导航等应用;基于定位的细粒度服务,如消歧语音控制(例如「打开此灯」);以及基于定位的信息(例如,「这种产品有特别优惠吗?」)。

JobScheduler 的数据成本敏感度

JobScheduler 是安卓的中心服务,用于帮助你管理预定的任务或运行 Doze、App Standby 和 Background Limits。在 Android 9 中,JobScheduler 可以为用户更好地处理网络相关的任务,协调运营商单独提供的网络状态。Jobs 现在可以宣布它们估计的数据大小、信号预读并规定详细的网络需求——运营商可以报告拥堵或未计量网络。JobScheduler 可根据网络状态进行管理。例如,当网络拥堵时,JobScheduler 可暂缓大型网络请求。当未计量时,它可运行预读作业以改善用户体验,例如预读标题。

为 NFC 支付和安全交易开放移动 API

Android 9 添加了 GlobalPlatform Open Mobile API 的一个实现到安卓上。在支持的设备上,app 可以使用 OMAPI API 来访问安全组件(SE),以允许智能卡支付和其它安全服务。硬件抽象层(HAL)提供潜在的 API 以列举可用的安全组件种类(eSE、UICC 和其它)。

app 的性能

ART 的性能改善

Android 9 能通过 ART 运行时为所有 app 带来性能和效率的提升。谷歌已经扩展了 ART 的执行文件使用来优化 app 并减少编译 app 代码的内存占用。ART 现在能使用文件信息进行 DEX 文件的设备上重写,并在多种流行的 app 中减少 11% 的内存占用。谷歌期待这些改善能带来系统 DEX 内存使用的减少,以及更快的 app 启动时间。

优化 Kotlin

Kotlin 是安卓系统的第一语言,如果你尚未尝试过,赶紧!谷歌承诺会长期在安卓中使用 Kotlin,并将继续扩展支持,包括优化 Kotlin 代码的性能。在 Android 9 中,你将能看到这项工作的首个结果。我们已经改善了多个编译器的性能,特别是那些目标指向循环语句的,以获得更优的性能。你仅需要保持 Android Studio 的 Kotlin 插件是最新的,就能获取所有最新的 Kotlin 性能提升。

此外,谷歌今天也发布了 Android 9-API 29 SDK(rev. 6) 的更新,其中在某些最频繁使用的 API 中包含空属性标记。

现代安卓

作为 Android 9 项目的一部分,谷歌的目标是现代化安卓的基础建设,以及在其上运行的 app。正如去年谷歌所宣布的,Google Play 将在 2018 年 11 月让所有 app 更新目标 Android Oreo(targetSdkVersion 26 或更高)。据此,如果你的 app 目标指向了早于 Android 4.2(API level 17) 的平台,用户在那之后安装它时将看到一个警告对话。

让你的 app 准备好在 Android 9 中使用

?

?

今天,Android 9 将推送给 Pixel 用户,并且也将在接下来的几个月推送给其它设备。为此,尽快测试你的 app 的兼容性是很重要的。你只需要从 Google Play 中下载 app 或使用模拟器来运行 Android 9。在你进行这个流程时,确保你的 app 可以运行,并运行良好,即确保设备能适应 Android 9 的变化。

同样请注意在 app 中使用非 SDK 界面。Android 9 限制了访问选择的非 SDK 界面,因此你应该减少对它们的依赖。

在你做了必要的更新后,建议立刻发布更新到 Google Play 上,不要改变 app 的平台目标。这能确保你在使用 Android 9 API 和目标来增强 app 时,获得 Android 9 的良好用户体验,

用 Android 9 的功能和 API 来增强你的 app

当你准备好时,就安装 Android 9 并在其中使用新的功能和 API 来做开发。

最开始,你需要下载官方 API 28 SDK、最新的工具和模拟器映像到 Android Studio 3.1 中,或者使用 Android Studio 3.2 的最新版本。然后更新你的项目的 compileSdkVersion 和 targetSdkVersion 到 API 28。当你改变目标时,确保你的 app 支持所有合适的行为变化。

一旦准备好了,发布你的 API 更新到 Google Play 上。一个常用的策略是使用 Google Play 的 beta 测试功能以从一小群用户获取早期反馈,然后给产品做阶段性展示。

进入设备之中

从今天开始,一项 Android 9 的无线更新将开始推送到 Pixel 手机上。并且那些安装了测试版软件的设备,包括索尼、小米、HMD Global、Oppo、Vivo、一加和 Essential,以及所有授权的 Android One 设备,将在今年秋末接收到这项更新。我们也正在与一些伙伴合作在今年将设备更新为 Android 9。

原文链接:https://android-developers.googleblog.com/2018/08/introducing-android-9-pie.html

参与评论