做者:Dave Burke, 工程部副总裁html
Android 9 利用人工智能技术,让您的手机更加智能、简洁与人性化。请经过本文了解 Android 9 的全部新特性,同时也但愿各位开发者可以借助 Android 9,全面提高应用性能,打造出色体验,让您的应用与用户走得更近!android
在 Android 9 的开发过程当中,十分感谢你们的积极反馈 ,咱们收到了超过 1000 条报错与特性请求 。共有超过 140,000 名开发者经过 Android Beta 项目试用了以前发布的开发者预览版,此外,更有 7 家顶尖合做设备厂商相继推出了支持 Android P Beta 版的旗舰机型,帮助咱们获取全球早期 Beta 用户的反馈。编程
从今天起,咱们将在 Android 开源项目 (AOSP) 中发布 Android 9 源码,同时开始向 Pixel 用户推送系统更新通知,其它更多 Android 设备预计会在接下来的几个月内陆续收到通知。api
咱们会继续努力将 Android 打形成一流的开放平台,助力全球开发者取得商业成功。指望各位可以利用 Android 9 这个新平台并借助 Google Play 中新增的功能,开发出优质的应用和游戏,经过最有效和安全的方式,为全球用户带去精彩体验!安全
以机器学习为核心,打造更为智能的手机服务器
Android 9 赋予手机强大的学习能力:系统可以根据用户在使用过程当中展露的习惯与偏好,进行自我学习与适应 —— 从强劲续航到人性化应用推荐,Android 9 都能想您所想,保障持久流畅的用户体验。网络
动态电量管理app
咱们与 DeepMind 合做推出了动态电量管理特性,利用机器学习技术对系统资源进行有限分配,更专一于用户最经常使用的应用。若是您已经针对低耗电模式、应用待机模式以及后台限制对您的应用进行过相关优化,那么它就应该已经可以和动态电量管理特性完美配合。若是您暂时还未开始优化工做,请阅读电量管理官方文档,获取具体操做指南。框架
Slices 可以有效帮助用户节省操做时间,不须要经过全屏体验就可以使用应用的部分功能。借助配套的 UI 模板,Slices 可以将应用内容以高动态、富交互的形式插入到多个使用场景中,好比 Google Search 和 Assistant。请进一步了解如何在应用中构建 Slices。机器学习
App Actions
App Actions 是一种全新的应用推荐方式。开发者能够利用这个功能,让更多人看到本身的应用并极大提升用户参与度。借助机器学习技术,App Actions 能对应用的语义意图和使用场景进行分析,并根据分析结果在适当的时机向用户推荐您的应用。
文本识别与 Smart Linkify
在 Android 9 中,咱们对识别文本的机器学习模型进行了扩展,使其能够借助 TextClassifier API 识别出相似日期或航班号这样的信息。此外, Smart Linkify 容许开发者经过 Linkify API 使用文本识别模块完成多项操做,好比对用户可采起的操做提出建议。Smart Linkify 让系统在文本识别精确度与速度上都有明显的提高。
Android 9.0 对神经网络 API 进行了扩展与改进,进一步优化 Android 对机器学习硬件加速的支持。神经网络 API 1.1 共增长了对 9 个新算子的支持,它们分别是 Pad、BatchToSpaceND、SpaceToBatchND、Transpose、Strided Slice、Mean、Div、Sub 和 Squeeze。TensorFlow Lite 就是一个已经用上此 API 的典型机器学习框架。
“让智能手机更加智能” 是咱们向前迈进的重要一步。可是,如何把握好用户与科技的关系 —— 让科技以人为先,这一点也一样关键。在 Android 9 中,咱们大幅度改进了用户界面,让它更简洁,也更易于操做;对于开发者而言,这些变动可以让用户更加容易搜索,使用和管理您的应用。
全新系统导航
通过一年多的努力, Android 9 迎来了全新的系统导航,让多任务切换及关联应用探索变得更加简单。您只须要向上滑动屏幕就能够全屏预览最近使用过的应用,轻触预览页后即可以切换至所选应用。
Android 9 中加入了凹口屏支持,让您的应用能够充分利用最新全面屏,展示应用的独特魅力。该功能能够在大部分应用中无缝工做,系统会经过调整状态栏高度将应用内容与屏幕缺口区域分开。若是您的应用含有沉浸式内容,您可调用 display cutout APIs 确认缺口形状与位置,而后请求围绕缺口进行全屏布局。另外,咱们还加入了开发者选项来模拟任意设备上的凹口形状,从而极大简化了应用支持凹口屏幕所需的构建以及测试流程。
Android 9 进一步改善了通知的实用性与可操做性。消息类应用能够调用新的 MessagingStyle API 来显示对话,附加照片和表情,或者提供智能回复建议。再过不久,您就可使用 ML Kit 在应用中生成智能回复。
文本放大镜
Android 9 中添加文字放大镜工具 (Magnifier widget),以提高文本选择方面的用户体验。因为该放大器提供了能够在文本上方拖拽的文本放大面板,因此有助于用户精准地定位光标或文本选择手柄。该功能能够灵活运用在全部附加在窗口的视图上,个性化小部件和定制文本呈现均是不错的应用场景。并且,该放大器工具还能够提供任何视图或界面的放大版本,而不只仅是文本。
统一身份验证对话框
生物传感器被普遍应用于身份认证,为了保障用户在不一样感应器和应用间可以得到一致的体验, Android 9 引入了统一的身份验证对话框,提示用户进行操做。应用再也不须要自行设计对话框,而是经过调用 BiometricPrompt API 触发系统对话框。除指纹识别之外 (包括屏幕下指纹识别),该 API 还支持面部识别以及虹膜识别。
高可信度用户确认
Android 9 新增了高可信度用户确认 (Android Protected Confirmation) ,该功能经过可信执行环境 (TEE) 确保提示文本被真实用户确认。只有在用户成功确认以后,TEE 才会签发该文本,让应用进行后续验证步骤。
增强密钥安全保护
咱们还加入了一个新的 KeyStore 类 —— StrongBox,并提供相应的 API 来支持那些提供了防入侵硬件措施的设备,好比独立的 CPU,内存以及安全存储。您能够在 KeyGenParameterSpec 里进行设置,决定是否把密钥交给 StrongBox 安全芯片来保存。
DNS over TLS
Android 9 内置对 DNS over TLS 的支持:若网络 DNS 服务器提供支持,设备会自动将 DNS 查询升级为 TLS 查询。用户能够经过更改 “网络和互联网” 设置下的隐私 DNS (Private DNS) 模式来管理 DNS over TLS 行为。自行运行 DNS 查询的应用能够经过调用新的 LinkProperties.isPrivateDnsActive() API 来获取 DNS 模式相关信息。请阅读《Android P 开发者预览版支持 DNS over TLS》,获取进一步信息。
默认使用 HTTPS
为了将全部网络流量从明文 (未加密的HTTP) 逐步迁移至 TLS,咱们更改了网络安全配置的默认设置,以阻止全部明文流量,强制应用经过 TLS 创建网降链接,除非开发者明确容许特定域名使用明文传输。
基于编译器的安全缓解措施
Android 9 将进一步扩展编译器级别的安全缓解措施,借助运行时危险行为监测进一步增强平台安全建设。Android 9 经过控制流程完整性 (CFI) 技术解决了代码重用 (code-reuse) 和任意代码执行两大漏洞,并扩展了 CFI 在媒体框架和其它关键安全组件内的使用范围,如 NFC 与蓝牙。同时,Android 9 还针对 Android 常见内核的 LLVM 编译添加了 CFI 内核支持。
此外,Android 9 还将整数溢出检查器 (Integer overflow sanitizer) 的使用范围扩展到其余库,以缓解内存损坏与信息泄露这两个问题。咱们调高了检查器在如下两类库中的优先级:1) 存在历史漏洞,2) 须要处理复杂且不受信任的输入,如 libui、libnl 和 libmediaplayerservice 一类的库都在调整范围内。
用户隐私
Android 9 新加入多项机制,进一步增强了对用户隐私的保护。系统禁止全部处于空闲状态的应用对话筒、摄像头和全部 SensorManager 传感器的访问。当应用的 UID 空闲时,麦克风将会报告 “无音频信号”,传感器将会中止报告事件,应用使用的摄像头也会断开链接,并在应用试图访问时生成错误。在大多数状况下,这些限制不会对现有应用形成新的问题,但建议您从应用中移除此类传感器请求。
Android 9 还让用户控制是否容许访问平台 build.serial 识别码 (它被 READ_PHONE_STATE 权限保护) 。自 Android 8.0 以来,直接访问此识别码的功能已被弃用。您能够调用 Build.getSerial() 方法,访问 build.serial 识别码。
多摄像头 API 以及其它改进
从 Android 9 开始,您能够在支持多摄像头 API 的设备上经过两个或更多实体摄像头同时访问视频流;在配有双前置或双后置摄像头的设备上,实现单摄像头没法实现的创新功能:如无缝变焦、散景和立体视觉。该 API 还容许您调用能够在两台或更多台摄像头之间自动切换的逻辑或混合摄像头视频流。
摄像头的其余改进还包括:利用新的会话参数 (Session parameters) 来有效减小初始捕捉时的延迟,表面 (Surface) 共享技术让摄像头客户端无须重启视频流即可处理各类场景。此外,咱们还加入了相关 API,提供基于屏幕闪光灯支持及 OIS 时间戳的访问权限。
HDR VP9 视频以及 HEIF 图像
Android 9 增长了对 HDR VP9 Profile 2 的内置支持。如今,您能够在支持 HDR 的设备上,把启用 HDR 功能的视频内容分享给您的用户。
另外,咱们还在添加了对 HEIF (heic) 图像编码的平台支持。 HEIF 是目前比较流行的一种的压缩格式,它改善了图片的压缩效果,并减小了图片的储存空间以及网络流量。引入平台支持后,开发者能更加方便地从后台服务器传输并使用 HEIF 图像。一旦肯定您的应用与该数据格式兼容,可用于分享或者显示,不妨尝试将 HEIF 设定为应用内图片的储存格式。此外,您还能够经过 ImageDecoder 将 jpeg 文件转化为 heic 文件,或经过 Bitmap Factory 从 jpeg 文件中获取位图。您亦可以使用 AndroidX 库中的 HeifWriter从 YUV 字节缓冲区、Surface以及位图中写入 HEIF 静态图像。
使用动态处理加强音频
开发者能够调用 Dynamics Processing API 对音频进行动态处理,经过分离出特定频率的声音,下降过大的音量,或者加强太小的音量,来改善应用的音频质量。好比说,即使说话者声音小,离麦克风远,并且外界环境十分嘈杂,您的应用依然能够有效捕捉并他/她的声音,并进行相应优化。该 API 提供了多声场、多频段的动态处理效果,包括一个预均衡器、一个多频段压缩器,一个后均衡器以及一个串联的音量限制器。
ImageDecoder API 让开发者能够经过一种更为简单的方式将图像解码为位图或 drawable。ImageDecoder 容许您从字节缓冲区、文件或 URI 建立位图或 drawable。它相比 BitmapFactory 有如下几个优点:支持精确缩放,支持单步解码至硬件存储器,支持解码后处理,以及动画图像解码。请获取进一步信息
使用 Wi-Fi RTT ,进行室内定位
Android 9 为 IEEE 802.11mc Wi-Fi 协议添加了平台支持 (也称为 Wi-Fi 往返时间,RTT),这可让您在应用中使用室内定位功能。在提供硬件支持的 Android 9 设备上,在启动位置服务并勾选 “容许获取地理位置信息” 选项后,应用就可使用 RTT API 测量与附近 Wi-Fi 接入点 (AP) 的距离。设备不须要链接到 AP 即可以使用 RTT,并且为了保护隐私,只有手机可以肯定距离,而 AP 不能够。
JobScheduler 中的数据费用敏感度
JobScheduler 是 Android 的一项核心服务,它能够帮助您针对低耗电模式、应用待机模式以及后台限制,妥善进行各类任务的调度。在 Android 9 中,JobScheduler 能够更好地帮助用户处理与网络相关的任务,并与运营商单独提供的网络状态信号相协调。任务如今能够声明预估数据量、信号预取以及指定详细的网络要求 —— 运营商能够报告网络情况是拥塞仍是不计量,而后 JobScheduler 会根据网络状态管理做业。例如,当网络拥塞时,JobScheduler 可能推迟大型网络请求;而在网络能够不计量使用时,则能够运行多种预加载做业 (例如,预读标题) 来改进用户体验。
用于 NFC 支付和安全交易的 Open Mobile API
Android 9 将 GlobalPlatform Open Mobile API 的实现添加至平台中。在支持的设备上,应用可使用 OMAPI API 访问安全元素 (SE) ,以启用智能卡支付等安全服务。硬件抽象层 (HAL) 提供了必要的 API,用于枚举多种可用的 Secure Elements (如 eSE, UICC 等)。
ART 性能提高
Android 9 借助 ART 运行时显著提升了应用的性能表现与运行效率。咱们扩展了 ART 对执行特征的使用,以优化应用并减小已编译应用代码的内存占用量。ART 现可以使用特征文件信息在设备上重写 DEX 文件,帮助多个常见应用的内存占用减小高达 11%。咱们指望借此减小系统 DEX 内存使用量并加快应用启动时间。
Kotlin 优化
Kotlin 是 Android 开发的一等编程语言,若是您还何尝试,还在等什么呢?咱们在 Kotlin 性能方面进行了长期资源投入,同时持续加大对 Kotlin 的支持,如优化 Kotlin 代码性能。在 Android 9 中,您会看到这项工做已初见成效 —— 咱们已经改进了一些编译器优化,尤为是那些针对循环的编译器优化,以实现更好的性能。咱们还将继续与 JetBrains 合做,优化 Kotlin 生成的代码。只需保持更新 Android Studio 上的 Kotlin 插件,您就能得到全部最新的 Kotlin 性能更新。
今天,咱们还在 Android 9 中发布了更新后的 API —— API 28 SDK (rev. 6),在部分最经常使用的 API 内加入可空值注解 (nullability annotation)。咱们会在近期发布相关文章,提供更多细节信息,敬请期待。
现代化的 Android
在 Android 9 中,咱们继续投入大量资源,进一步打造更为现代的 Android 平台与运行应用,进而推进咱们在安全性、性能和稳定性这三方面长远目标的实现。
咱们在去年就已经宣布过 Google Play 将要求全部应用在 2018 年 11 月以前针对 Android Oreo (targetSdkVersion 26 或更高) 进行更新。所以,若您的应用目标平台版本早于 Android 4.2 (API等级17),用户在安装您的应用时,系统会弹出警告对话框。请阅读迁移指南相关文档。咱们期待着您的应用可以充分利用现代 Android 为用户带来更好的体验。
因为 Pixel 用户从今天起就能够开始使用 Android 9,而其余设备也会在接下来的几个月陆续收到更新推送,所以尽快适配您的应用至 Android 9。您只需在 Android 9 Beta 设备或者模拟器上使用 Google Play 安装您目前的应用并进行测试,请确保您的应用在测试过程当中运行流畅,界面美观,并可以妥善处理 Android 9 的各项行为变动。
同时,请您留心应用调用非 SDK 接口的状况。Android 9 限制了一些特定非 SDK 接口的访问权限,所以您须要减小应用对这些接口的依赖。请阅读《后续更新 | 减小使用非 SDK 接口以提高稳定性》,了解详细信息。
在完成必要更新以后,咱们建议您当即将应用发布至 Google Play,暂时无需更改应用的目标平台版本。这能帮助您在保障用户体验的同时,继续利用 Android 9 API 优化应用性能并将其逐步迁移至目标平台。
当您准备就绪后,请尽情探索 Android 9,并利用新特性与 API 让您的应用臻于完美。
首先,请将官方版 API 28 SDK 、最新的开发工具与映像文件下载至 Android Studio 3.1,或者使用 Android Studio 3.2 最新版本,而后将项目的 compileSdkVersion 和 targetSdkVersion 更新至 API 28。在更改完目标平台版本以后,请确保您的应用支持全部的行为变动。
在您准备好后,请将 APK 更新发布至 Google Play。咱们建议您使用 Google Play 中的 beta 测试功能,先获取一小部分用户的早期反馈,而后再逐渐进行全量发布。
访问 Android 9 官方网站,阅读文档并获取更多相关信息。点击收看视频或者前往 Google I/O Android 播放列表,了解 Android 9 为开发者准备的精彩新亮点。
从今天开始,Pixel 设备将陆续获取 Android 9 的更新推送。
其它加入 Beta 项目的设备,如 Sony、小米、HMD、Oppo、Vivo、一加和 Essential 以及全部符合要求的 Android One 设备预计会在今年秋末收到更新推送。与此同时,咱们也在和其余合做伙伴展开合做,但愿在今年推出更多新 Android 9 设备或升级现有设备以支持新系统。
此外,适用于 Pixel 设备的系统映像现可供下载
请前往 Android 开源项目资源库中的 Android 9 板块,获取更多 Android 9 的相关资源。
Android 9 发布之际,开发者预览版也就正式结束了。咱们将在不久后关闭预览版报错渠道,可是请各位继续向咱们提供反馈!若是您遇到任何有关 Android 9 的问题,请经过 AOSP 反馈功能提交新的错误报告。
另外,咱们计划放慢 Android Beta 项目的步调,并移除项目内全部机型。若是您想继续在 Pixel 设备上体验预览版 Android 系统,请点击此处注册,以便继续获取相关项目的信息。
"再次感谢你们此前对预览版和公测版的大力支持。每一位开发者和早期用户都为 Android 9 的诞生提供了必不可少的力量,帮助咱们将 Android 9 打形成为卓越平台,为开发者和用户带来精彩体验。谢谢!"
点击这里前往 “Android Developers 官方文档” 查看更多相关信息