Android N for Developers
重要的开发人员功能
- 多窗体支持
- 通知
- JIT/AOT 编译
- 高速的应用安装路径
- 外出瞌睡模式
- 后台优化
- Data Saver
- 高速设置图块 API
- 号码屏蔽
- 来电过滤
- 区域设置和语言
- Android 中的 ICU4J API
- OpenGL ES 3.2 API
- Android TV 录制
- Android for Work
- 辅助工具
- 直接启动
- 密钥认证
- 网络安全性配置
- 默认受信任的 CA
- APK signature scheme v2
- 作用域文件夹訪问Android
N 仍处于活动的开发状态。但如今您能够将其作为 N Developer Preview 的一部分进行试用。下面部分重点介绍面向开发人员的部分新功能。
请务必查阅行为变更以了解平台变更可能影响您的应用的领域,看看开发人员指南,了解有关关键功能的很多其它信息。并下载 API
參考以获取新 API 的具体信息。
多窗体支持
在 Android N 中,我们为该平台引入了一个新的并且很须要的多任务处理功能 — 多窗体支持。
如今。用户能够一次在屏幕上打开两个应用。
- 在执行 Android N 的手机和平板电脑上,用户能够并排执行两个应用,或者处于分屏模式时一个应用位于还有一个应用之上。用户能够通过拖动两个应用之间的分隔线来调整应用。
- 在 Android TV 设备上,应用能够将自身置于画中画模式。从而让它们能够在用户浏览或与其它应用交互时继续显示内容。如需了解具体信息,请參阅下文。
图 1. 在分屏模式下执行的应用。
多窗体支持为您提供新的吸引用户方式,特别是在平板电脑和其它更大屏幕的设备上。
您甚至能够在您的应用中启用拖放。从而使用户能够方便地将内容拖放到您的应用或从当中拖出内容—这是一个很好的增强用户体验的方式。
向您的应用加入多窗体支持并配置多窗体显示的处理方式很easy。比如,您能够指定您的 Activity 同意的最小尺寸,从而防止用户将 Activity 调整到该尺寸下面。您还能够为应用禁用多窗体显示。这可确保系统将仅以全屏模式显示应用。
如需了解具体信息,请參阅多窗体支持开发人员文档。
通知增强功能
在 Android N 中。我们又一次设计了通知,使其更易于使用而且速度更快。部分变更包含:
- 模板更新:我们正在更新通知模板,新强调了英雄形象和化身。开发人员将能够充分利用新模板。仅仅需进行少量的代码调整。
- 绑定的通知:系统能够将消息组合在一起(比如,按消息主题)并显示组。
用户能够适当地进行 Dismiss 或 Archive 等操作。假设您已实现 Android Wear 的通知,那么您已经非常熟悉此模型。
- 直接回复:对于实时通信应用,Android 系统支持内联回复,以便用户能够直接在通知界面中高速回复短信。
- 自己定义视图:两个新的 API 让您在通知中使用自己定义视图时能够充分利用系统装饰元素,如通知标题和操作。
图 2. 绑定的通知和直接回复。
如需了解怎样实现新功能的信息,请參阅通知指南。
配置文件指导的 JIT/AOT 编译
在 Android N 中。我们加入了 Just in Time (JIT) 编译器。对 ART 进行代码分析。让它能够在应用执行时持续提升 Android 应用的性能。JIT 编译器对 Android 执行组件当前的 Ahead of Time (AOT) 编译器进行了补充,有助于提升执行时性能,节省存储空间,加快应用更新和系统更新速度。
配置文件指导的编译让 Android 执行组件可以依据应用的实际使用以及设备上的情况管理每一个应用的 AOT/JIT 编译。比如,Android 执行组件维护每一个应用的热方法的配置文件。而且可以预编译和缓存这些方法以实现最佳性能。对于应用的其它部分,在实际使用之前不会进行编译。
除提升应用的关键部分的性能外,配置文件指导的编译还有助于降低整个 RAM 占用。包含关联的二进制文件。此功能对于低内存设备很尤其重要。
Android 执行组件在管理配置文件指导的编译时。可最大程度减少对设备电池的影响。仅当设备处于空暇状态和充电时才进行编译,从而能够通过提前执行该工作节约时间和省电。
高速的应用安装路径
Android 执行组件的 JIT 编译器最实际的优点之中的一个是应用安装和系统更新的速度。即使在 Android 6.0 中须要几分钟进行优化和安装的大型应用。如今仅仅需几秒钟就能够完毕安装。系统更新也变得更快。由于省去了优化步骤。
外出瞌睡模式...
Android 6.0 推出了瞌睡模式,即设备处于空暇状态时。通过推迟应用的 CPU 和网络活动以实现省电目的的系统模式,比如。设备放在桌上或抽屉里时。
如今,在 Android N 中,瞌睡模式又前进了一步。在外出时也能够省电。仅仅要屏幕关闭了一段时间,且设备未插入电源,瞌睡模式就会相应用使用熟悉的 CPU 和网络限制。这意味着用户即使将设备放入口袋里也能够省电。
图 3. 瞌睡模式如今应用限制以延长电池寿命。即使设备未处于精巧状态。
屏幕关闭片刻后。设备在使用电池时,瞌睡模式将限制网络訪问。同一时候延迟作业和同步。在短暂的维护时间范围后。其同意应用訪问网络。并运行延迟的作业/同步。
打开屏幕或将设备插入电源会使设备退出瞌睡模式。
当设备再次处于精巧状态时,屏幕关闭且使用电池一段时间,瞌睡模式针对 PowerManager.WakeLock
,AlarmManager
警报和
GPS/Wi-Fi 扫描应用完整 CPU 和网络限制。
不管设备是否处于运动状态。将应用调整到瞌睡模式的最佳做法均同样,因此,假设您已更新应用以妥善处理瞌睡模式,则一切就绪。假设不是,请马上開始将应用调整到瞌睡模式。
Project Svelte:后台优化
Project Svelte 在持续改善,以最大程度降低生态系统中一系列 Android 设备中系统和应用使用的 RAM。
在 Android N 中,Project Svelte 注重优化在后台中执行应用的方式。
后台处理是大多数应用的一个重要部分。
处理得当,可让您实现很棒的用户体验 — 即时、高速和情境感知。假设处理不得当。后台处理会毫无必要地消耗 RAM(和电池)。同一时候影响其它应用的系统性能。
自 Android 5.0 公布以来,JobScheduler
已成为运行后台工作的首选方式,其工作方式有利于用户。应用能够在安排作业的同一时候同意系统基于内存、电源和连接情况进行优化。JobScheduler
可实现控制和简洁性,我们想要全部应用都使用它。
还有一个很好的选择是 GCMNetworkManager
(Google
Play 服务的一部分),其在旧版 Android 中提供类似的作业安排和兼容性。
我们在继续扩展 JobScheduler
和 GCMNetworkManager
,以符合多个用例 — 比如,在 Android N 中,如今,您能够基于内容提供程序中的更改安排后台工作。同一时候,我们開始弃用一些较旧的模式,这些模式会减少系统性能。特别是低内存设备的系统性能。
在 Android N 中。我们删除了三个经常使用隐式广播 — CONNECTIVITY_ACTION
、ACTION_NEW_PICTURE
和ACTION_NEW_VIDEO
—
由于这些广播可能会一次唤醒多个应用的后台进程,同一时候会耗尽内存和电池。
假设您的应用收到这些广播,请充分利用 N Developer Preview 以迁移到 JobScheduler
和相关的 API。
如需了解详情。请查看后台优化文档。
Data Saver
图 4. 设置中的 Data Saver
在移动设备的整个生命周期。蜂窝数据计划的成本一般会超出设备本身的成本。
对于很多用户而言,蜂窝数据是他们想要节省的昂贵资源。
Android N 推出了 Data Saver 模式,这是一项新的系统服务,有助于降低应用使用的蜂窝数据,不管是在漫游,账单周期即将结束,还是使用少量的预付费数据包。Data Saver 让用户能够控制应用使用蜂窝数据的方式。同一时候让开发人员打开 Data Saver 时能够提供很多其它有效的服务。
用户在 Settings 中启用 Data Saver 且设备位于按流量计费的网络上时,系统屏蔽后台数据使用。同一时候指示应用在前台尽可能使用较少的数据 — 比如。通过限制用于流媒体服务的比特率、减少图片质量、延迟最佳的预缓冲等方法来实现。用户能够将特定应用增加白名单以同意后台按流量的数据使用。即使在打开 Data Saver 时也是如此。
Android N 扩展了 ConnectivityManager
,以便为应用检索用户的
Data Saver 首选项并监控首选项变更提供一种方式。
全部应用均应检查用户是否已启用 Data Saver 并努力限制前台和后台数据的使用。
高速设置图块 API
图 5. 通知栏中的高速设置图块。
“高速设置”通经常使用于直接从通知栏显示关键设置和操作。很easy。在 Android N 中,我们已扩展“高速设置”的范围,使其更加实用更方便。
我们为额外的“高速设置”图块加入了很多其它空间。用户能够通过向左或向右滑动跨分页的显示区域訪问它们。我们还让用户能够控制显示哪些“高速设置”图块以及显示的位置 — 用户能够通过拖放图块来加入或移动图块。
对于开发人员。Android N 还加入了一个新的 API。从而让您能够定义自己的“高速设置”图块,使用户能够轻松訪问您应用中的关键控件和操作。
对于急需或频繁使用的控件和操作。保留“高速设置”图块,且不应将其用作启动应用的快捷方式。
定义图块后,您能够将它们显示给用户,用户可通过拖放将图块加入到“高速设置”。
如需创建应用图块的很多其它信息。请參阅可下载的 API 參考中的android.service.quicksettings.Tile
。
号码屏蔽
Android N 如今支持在平台中进行号码屏蔽,提供框架 API,让服务提供商能够维护屏蔽的号码列表。
默认短信应用、默认手机应用和提供商应用能够对屏蔽的号码列表进行读取和写入操作。
其它应用则无法訪问此列表。
通过使号码屏蔽成为平台的标准功能。Android 为应用提供一致的方式来支持广泛的设备上的号码屏蔽。
应用能够利用的其它优势包含:
- 还会屏蔽已屏蔽的来电号码发出的短信
- 通过 Backup & Restore(备份和还原)功能能够跨重置和设备保留屏蔽的号码
- 多个应用能够使用同样的屏蔽号码列表
此外。通过 Android 的运营商应用集成表示运营商能够读取设备上屏蔽的号码列表,并为用户运行服务端屏蔽,以阻止不须要的来电和短信通过不论什么介质(如 VOIP 端点或转接电话)到达用户。
如需了解具体信息,请參阅可下载的 API 參考中的 android.provider.BlockedNumberContract
。
来电过滤
Android N 同意默认的手机应用过滤来电。
手机应用运行此操作的方式是实现新的 CallScreeningService
,该方法同意手机应用基于来电的 Call.Details
运行大量操作,比如:
- 拒绝来电
- 不同意来电到达呼叫日志
- 不向用户显示来电通知
如需了解具体信息,请參阅可下载的 API 參考中的 android.telecom.CallScreeningService
。
多区域设置支持、多语言
Android N 如今同意用户在设置中选择多个区域设置,以更好地支持双语用例。
应用能够使用新的 API 获取用户选择的区域设置,然后为多区域设置用户提供更成熟的用户体验 — 如以多个语言显示搜索结果,而且不会以用户了解的语言翻译网页。
除多区域设置支持外。Android N 还扩展了用户可用的语言范围。
它针对经常使用语言提供超过 25 种的变体。如英语、西班牙语、法语和阿拉伯语。它还针对 100 多种新语言加入了部分支持。
应用能够通过调用 LocaleList.GetDefault()
获取用户设置的区域设置列表。
为支持扩展的区域设置数量。Android N 正在改变其解析资源的方式。请务必使用新的资源解析逻辑測试和验证您的应用能否如期执行。
如需有关新资源解析行为和应遵循的最佳做法的很多其它信息,请參阅多语言支持。
Android 中的 ICU4J API
Android N 眼下在 Android 框架(位于 android.icu
软件包下)中提供 ICU4J API 的子集。迁移非常easy,主要是须要从 com.java.icu
命名空间更改为 android.icu
。
假设您已在您的应用中使用
ICU4J 捆绑包,切换到 Android 框架中提供的 android.icu
API 能够大量节省 APK 大小。
假设要了解有关 Android ICU4J API 的很多其它信息,请參阅 ICU4J 支持。
OpenGL™ ES 3.2 API
Android N 加入了框架接口和对 OpenGL ES 3.2 的平台支持。包含:
- 来自 Android 扩展包 (AEP)
的全部扩展(EXT_texture_sRGB_decode
除外)。 - 针对 HDR 的浮点帧缓冲和延迟着色。
- BaseVertex 画图调用可实现更好的批处理和流媒体服务。
- 强大的缓冲区訪问控制可降低 WebGL 开销。
Android N 上适用于 OpenGL ES 3.2 的框架 API 与 GLES32
类一起提供。使用 OpenGL ES 3.2 时,请务必通过<uses-feature>
标记和 android:glEsVersion
属性在您的清单文件里声明要求。
如需了解有关使用 OpenGL ES 的信息,包含怎样在执行时检查设备支持的 OpenGL ES 版本号。请參阅 OpenGL ES API 指南。
Android TV 录制
Android N 通过新的录制 API 加入了从 Android TV 输入服务录制和播放内容的功能。构建在现有时移 API 之上,TV 输入服务可以控制可以录制的渠道数据、保存录制的会话的方式,同一时候可通过录制的内容管理用户交互。
如需了解具体信息,请參阅 Android TV 录制 API。
Android for Work
Android for Work 针对执行 Android N 的设备加入了很多新功能和 API。部分重要内容例如以下— 有关与 Android N 相关的 Android for Work 更新的完整列表,请參阅 Android for Work 变更。
托管配置文件安全性挑战
配置文件全部者能够指定为托管配置文件里执行的应用指定单独的安全性挑战。
当用户尝试打开不论什么工作应用时将显示工作挑战。成功完毕安全性挑战可解锁托管配置文件并将其解密(假设须要)。对于配置文件全部者,ACTION_SET_NEW_PASSWORD
提示用户设置工作挑战,ACTION_SET_NEW_PARENT_PROFILE_PASSWORD
提示用户设置设备锁。
配置文件全部者能够使用 setPasswordQuality()
、setPasswordMinimumLength()
和相关方法针对工作挑战设置不同的password策略(比如。PIN 必须多长。或能否够使用指纹解锁配置文件)。配置文件全部者还能够使用新的getParentProfileInstance()
方法返回的 DevicePolicyManager
实例设置设备锁定。
此外,配置文件全部者能够使用新的 setOrganizationColor()
和 setOrganizationName()
方法针对工作挑战自己定义凭据屏幕。
关闭工作
在具有托管配置文件的设备上,用户能够切换工作模式。
工作模式关闭时,管理的用户暂时关闭,其禁用托管配置文件应用、后台同步和通知。
这包含配置文件全部者应用。关闭工作模式时。系统显示永久状态图标,以提醒用户他们无法启动工作应用。
启动器指示该工作应用和小组件无法訪问。
Always on VPN
设备全部者和配置文件全部者能够确保工作应用始终通过指定的 VPN 连接。
系统在设备启动后自己主动启动该 VPN。
新的 DevicePolicyManager
方法为 setAlwaysOnVpnPackage()
和 getAlwaysOnVpnPackage()
。
因为 VPN 服务无需应用交互就可以由系统直接绑定。因此,VPN client必须针对 Always on VPN 处理新的入口点。和曾经一样,由与操作匹配的 Intent 过滤器将服务指示给系统。android.net.VpnService
。
用户还能够使用 Settings>More>Vpn 在主要用户中手动设置实现 VPNService
方法的 Always on VPN client。
辅助工具增强功能
Android N 如今针对新的设备设置直接在欢迎屏幕上提供“Vision Settings”。这使用户能够更easy发现和配置他们设备上的辅助工具功能,包含放大手势、字体大小、显示屏尺寸和 TalkBack。
随着这些辅助工具功能更为突出,在启用这些功能后,您的用户更可能试用您的应用。请务必提前启用这些设置測试您的应用。您能够通过 Settings > Accessibility 启用它们。
还是在 Android N 中。辅助工具服务如今能够帮助具有动作障碍的用户触摸屏幕。全新的 API 同意使用人脸追踪、眼球追踪、点扫描等功能构建服务。以满足这些用户的需求。
如需了解具体信息,请參阅可下载的 API 參考 中的 android.accessibilityservice.GestureDescription
。
直接启动
直接启动能够缩短设备启动时间,让注冊的应用具有有限的功能。即使在意外重新启动后。
比如。假设当用户睡觉时加密的设备重新启动,那么注冊的警报、消息和来电如今能够和往常一样继续通知用户。
这也意味着重新启动后辅助工具服务会马上可用。
在 Android N 中。直接启动充分利用基于文件的加密,以针对系统和应用数据启用细化的加密策略。
为系统和应用数据。系统针对选定的系统数据和显式注冊的应用数据使用设备加密的存储。默认情况下。凭据加密的存储可用于全部其它系统数据、用户数据、应用及应用数据。
启动时,系统在受限的模式中启动。仅訪问设备加密的数据,不会相应用或数据进行常规訪问。
假设您有想要在此模式下执行的组件,您能够通过在清单文件里设置标记注冊它们。
重新启动后,系统通过广播LOCKED_BOOT_COMPLETED
Intent 激活注冊的组件。
系统确保注冊的设备加密的应用数据在解锁前可用。
全部其它数据在用户确认锁定屏幕凭据进行解密前均不可用。
如需了解具体信息。请參阅直接启动。
密钥认证
使用硬件支持的密钥库,可更安全地在 Android 设备上创建、存储和使用加密密钥。它们可保护密钥免受 Linux 内核、潜在的 Android 漏洞的攻击,也可防止从已取得 root 权限的设备提取密钥。
为了让硬件支持的密钥库使用起来更简单和更安全。Android N 引入了密钥认证。应用和关闭的设备可使用密钥认证以坚决地确定 RSA 或 EC 密钥对是否受硬件支持、密钥对的属性怎样,以及其使用和有效性有何限制。
应用和关闭的设备服务能够通过 X.509 认证证书(必须由有效的认证密钥签署)请求有关密钥对的信息。认证密钥是一个 ECDSA 签署密钥,其在出厂时被注入设备的硬件支持的密钥库。
因此,有效的认证密钥签署的认证证书可确认硬件支持的密钥库是否存在,以及该密钥库中密钥对的具体信息。
为确保设备使用安全的官方 Android 出厂映像,密钥认证要求设备 bootloader 向可信运行环境
(TEE) 提供下面信息:
- 设备上安装的操作系统版本号和补丁级别
- 验证的启动公钥和锁定状态。
如需了解有关硬件支持的密钥库功能的具体信息,请參阅硬件支持的密钥库指南。
除密钥认证外,Android N 还推出了指纹绑定密钥,在指纹注冊时不会撤销。
网络安全性配置
在 Android N 中,通过使用说明性网络安全性配置(而不是使用传统的易出错的编程 API(比如。X509TrustManager)),应用能够安全地自己定义其安全(HTTPS、TLS)连接的行为,无需不论什么代码改动。
支持的功能:
- 自己定义信任锚。让应用能够针对其安全连接自己定义哪些证书颁发机构 (CA) 受信任。比如。信任特定的自签署证书或受限的公共 CA 集。
- 仅调试重写。让应用开发人员能够安全调试其应用的安全连接。而不会添加安装基础的风险。
- 明文流量退出。让应用能够防止自身意外使用明文流量。
- 固定证书。这是一项高级功能。让应用能够针对安全连接限制哪些server密钥受信任。
如需了解具体信息,请參阅网络安全性配置。
默认受信任的证书颁发机构
默认情况下。针对 Android N 的应用仅信任系统提供的证书,且不再信任用户加入的证书颁发机构 (CA)。
假设针对 Android N 的应用希望信任用户加入的 CA。则应使用网络安全性配置以指定信任用户
CA 的方式。
APK signature scheme v2
PackageManager 类如今支持使用 APK signature scheme v2 验证应用。
APK signature scheme v2 是一个整个文件签名架构,通过检測对 APK 文件进行的不论什么未经授权更改,可大幅提高验证速度,同一时候也可加强完整性保证。
为保持向后兼容,在使用 v2 签名架构签署之前。APK 必须先使用 v1 签名架构(JAR 签名架构)签署。
对于 v2 签名架构,假设在使用 v2 架构签署后使用额外的证书签署 APK,验证将失败。
APK signature scheme v2 支持稍后将在 N Developer Preview中推出。
作用域文件夹訪问
在 Android N 中。应用能够使用新的 API 请求訪问特定的外部存储文件夹,包含可移动媒体上的文件夹,如
SD 卡。新 API 大大简化了应用訪问标准外部存储文件夹的方式,如 Pictures
文件夹。应用(如照片应用)能够使用这些 API(而不是使用 READ_EXTERNAL_STORAGE
),其授予全部存储文件夹的訪问权限或存储訪问框架。从而让用户能够导航到文件夹。
此外,新的 API 简化了用户向应用授予外部存储訪问权限的步骤。
当您使用新的 API 时,系统使用一个简单的权限 UI。其清楚地具体介绍应用正在请求訪问的文件夹。
如需了解具体信息,请參阅作用域文件夹訪问开发人员文档。