Android 7.0 Nougat 为用户和开发者引入多种新功能。本文重点介绍面向开发者的新变化。
请务必查看 Android 7.0 行为变更:了解平台变更的方面 可能会影响您的应用
要详细了解 Android 7.0 的个人用户功能,请访问 www.android.com。
多窗口支持
Android 7.0 中引入了呼声很高的全新 多任务处理功能 - 多窗口支持。
用户现在可以在屏幕上同时弹出两个应用。
- 在搭载 Android 7.0 的手机和平板电脑上,用户可以在分屏模式下并排运行两个应用,或者上下并排运行两个应用。用户可以通过拖动来调整应用大小 分隔线。
- 在 Android TV 设备上,应用可以将自己置于画中画模式 模式,以便在用户浏览或浏览内容时继续显示内容。 与其他应用交互
多窗口模式支持,尤其是在平板电脑和其他更大屏幕的设备上 为您提供吸引用户的新方式。您甚至可以在 GCP 控制台中 让用户可以方便地将内容拖放到您的应用或从其中拖出内容 - 这对 提升用户体验的方式。
向应用添加多窗口支持并配置多窗口支持的方式非常简单 处理多窗口显示。例如,您可以指定 activity 的 允许的最小尺寸,防止用户调整以下 activity 的尺寸 该尺寸。您还可以为应用停用多窗口显示, 确保系统将仅以全屏模式显示您的应用。
如需了解详情,请参阅多窗口支持开发者文档。
通知增强功能
在 Android 7.0 中,我们重新设计了通知,使其变得更简单、 使用起来更加方便部分变更包括:
- 模板更新:我们正在更新通知模板,新强调了英雄形象和化身。开发者将能够 充分利用新模板,只需对代码进行少量调整。
-
消息样式自定义:您可以自定义更多元素
使用
MessagingStyle
类。您可以配置消息 会话标题和内容视图。 - 捆绑通知:系统可以将消息分组 (例如按消息主题),以及显示相应群组。用户可以 适当地对它们执行“关闭”或“归档”等操作。如果您 那么您已经熟悉了 模型。
- 直接回复:对于实时通信应用, Android 系统支持内联回复,以便用户快速回复 短信或短信。
- 自定义视图:两个新的 API 让您在通知中使用自定义视图时可以充分利用系统装饰元素,如通知标题和操作。
如需了解如何实现新功能,请参阅通知指南。
配置文件指导的 JIT/AOT 编译
在 Android 7.0 中,我们添加了 Just in Time (JIT) 编译器, 对 ART 进行性能分析,以便持续提升 Android 应用。JIT 编译器对 ART 当前的 预先 (AOT) 编译器,有助于提升运行时性能, 还可加快应用更新和系统更新速度。
配置文件指导的编译让 Android 运行组件能够根据应用的实际使用以及设备上的情况管理每个应用的 AOT/JIT 编译。例如,ART 会维护每个应用热方法的配置文件,并且可以 预编译和缓存这些方法以实现最佳性能。它保留了 在实际使用之前不会编译应用的某些版本。
除了提高应用的关键部分的性能之外,配置文件引导的 编译有助于减少应用的总体 RAM 占用,包括 二进制文件此功能对于低内存设备非常尤其重要。
ART 在管理配置文件指导的编译时,可最大限度降低对 设备电池。仅当设备处于空闲状态时,它才会进行预编译 从而节省时间和电量。
快速的应用安装路径
Android 运行组件的 JIT 编译器最实际的好处之一就是 安装和系统更新。即使在 Android 6.0 中需要几分钟进行优化和安装的大型应用,现在只需几秒钟就可以完成安装。系统更新也变得更快,因为省去了更多优化步骤。
随时随地低电耗模式...
Android 6.0 引入了低电耗模式,它是一种系统模式,可将 应用的设备处于空闲状态时(例如在设备处于闲置状态时)的 CPU 和网络活动 放在桌子上或抽屉里
现在,在 Android 7.0 中,低电耗模式更进一步,可随时随地节省电量。 只要屏幕关闭一段时间且设备未接通电源, 低电耗模式会对应用施加熟悉的 CPU 和网络限制。 这意味着,即使用户随身携带设备,也可以节省电量 。
屏幕关闭片刻后,设备在使用电池时,进入低电耗模式 限制网络访问、延迟作业和同步。短暂维护期间 允许应用程序访问网络,以及任何被延迟的 作业/同步执行。打开屏幕或将设备插入电源 退出低电耗模式。
设备再次处于静止状态(屏幕关闭且使用电池)时
低电耗模式会对 PowerManager.WakeLock
、AlarmManager
闹钟和
GPS/WLAN 扫描。
无论设备处于低电耗模式, 因此,如果您已以适当的方式 处理低电耗模式,一切都已就绪。如果不能,请开始调整 应用进入低电耗模式。
Project Svelte:后台优化
Project Svelte 在持续改善,以最大程度减少系统和应用占用的 RAM 并覆盖生态系统中各种 Android 设备。在 Android 7.0 中,Project Svelte 注重优化应用在后台运行的方式。
后台处理是大多数应用的重要组成部分。如果处理得当 可为您打造出色的用户体验 - 即时、快速且情境感知。 如果处理不当,后台处理可能会不必要地消耗 RAM(并且 电池)并影响其他应用的系统性能。
从 Android 5.0 开始,JobScheduler
就一直是
以良好的方式执行后台工作
。应用可以安排作业,同时让系统根据
内存、电源和连接情况。JobScheduler 可让您
我们希望所有应用都使用它
另一个不错的选择是<ph type="x-smartling-placeholder"></ph>
GCMNetworkManager
(Google Play 服务的一部分),
提供类似的作业安排,且与
Android。
我们会继续扩展 JobScheduler
,并
GCMNetworkManager
与以下成员会面
您的应用场景,例如,在 Android 7.0 中,您现在可以安排后台运行时间
基于内容提供方的变化。与此同时,我们开始
弃用了一些可能会降低系统性能的较旧模式
尤其是在低内存设备上。
在 Android 7.0 中,我们移除了三个常用的隐式广播 -
CONNECTIVITY_ACTION
、ACTION_NEW_PICTURE
和 ACTION_NEW_VIDEO
,因为它们可以唤醒
同时运行多个应用的后台进程,并且会同时耗尽内存和电池。如果您的应用收到这些广播,请充分利用 Android 7.0 以迁移到 JobScheduler
和相关的 API。
请参阅背景信息 优化文档。
SurfaceView
Android 7.0 支持同步移至 SurfaceView
该类可提供更好的电池性能
在特定情况下高于 TextureView
:呈现视频或
3D 内容、支持滚动和动画视频位置的应用消耗的电量更少
与使用 TextureView
相比,价格为 SurfaceView
。
SurfaceView
类可实现更省电的合成
屏幕,因为它是在专用硬件中合成,与应用分开
窗口内容。因此,中间层
TextureView
之后的副本数量。
SurfaceView
对象的内容位置现在会同步更新
应用内容相关联。这一变更的一个结果就是
SurfaceView
中播放的视频的翻译或缩放比例
在视图移动时,不会再在视图旁边生成黑边。
从 Android 7.0 开始,我们强烈建议您使用
SurfaceView
,而非 TextureView
。
流量节省程序
在移动设备的整个生命周期中,移动数据网络计划的费用通常 超过设备本身的成本。对许多用户而言,移动数据网络是 他们想要节省的昂贵资源
Android 7.0 推出了流量节省模式,这是一项新的系统服务,有助于减少应用使用的移动数据网络,无论是在漫游,账单周期即将结束,还是使用少量的预付费数据包。借助流量节省程序,用户可以控制 使用移动数据网络,并可让开发者在连接到移动数据网络时提供更高效的服务 节省程序已开启。
当用户在设置中启用流量节省程序时, 连接到按流量计费的网络时,系统会阻止后台流量使用并向应用发出信号 尽可能减少在前台使用的流量 - 例如通过限制 比特率、降低图片质量、推迟乐观预缓存 依此类推。用户可以允许特定应用使用按流量计费的后台流量消耗,即使在打开流量节省程序时也是如此。
Android 7.0 扩展了 ConnectivityManager
,以便为应用提供
获取
用户的流量节省程序偏好设置并监控
偏好设置更改。所有应用都应检查用户是否已启用数据网络
节省流量,并努力限制前台和后台流量消耗。
Vulkan API
Android 7.0 将新的 3D 渲染 API VulkanTM 集成到平台中。点赞 OpenGLTM ES,Vulkan 是 3D 图形和渲染维护的一项开放标准 由 Khronos Group 打造。
Vulkan 是从零开始设计的,旨在最大限度地降低驱动程序中的 CPU 开销, 让应用能够更直接地控制 GPU 操作。Vulkan 它还允许多个线程在执行作业时 例如命令缓冲区构建
Vulkan 开发工具和库都已卷入 Android 7.0 SDK 中。他们 包括:
- 标头
- 验证层(调试库)
- SPIR-V 着色器编译器
- SPIR-V 运行时着色器编译库
Vulkan 仅适用于搭载支持 Vulkan 的硬件的设备上的应用, 例如 Nexus 5X、Nexus 6P 和 Nexus Player。我们正在与 合作伙伴尽快将 Vulkan 推广到更多设备。
如需了解详情,请参阅 API 文档。
Quick Settings Tile API
“快速设置”通常用于直接从通知栏显示关键设置和操作,非常简单。在 Android 7.0 中,我们扩展了 快捷设置,让 Google 助理更加实用、更方便。
我们为额外的“快捷设置”图块添加了更多空间 左右滑动即可访问分页的显示区域。我们还 让用户可以控制显示哪些“快捷设置”图块以及它们的位置 显示—用户只需拖放图块即可添加或移动图块。
对于开发者,Android 7.0 还添加了一个新的 API,从而让您可以定义自己的“快速设置”功能块,使用户可以轻松访问您应用中的关键控件和操作。
“快捷设置”功能块专用于 急需或经常使用,不应用作 启动应用
定义图块后,即可将其显示给用户,用户也可添加 将其拖放到“快捷设置”中
如需了解如何创建应用功能块,请参阅参考文档
价格为 Tile
。
号码屏蔽
Android 7.0 现在支持在平台中进行号码屏蔽,提供框架 API,让服务提供商可以维护屏蔽的号码列表。通过 默认短信应用、默认手机应用和运营商应用都可以收发短信 写入屏蔽号码列表。其他应用则无法访问此列表。
通过使号码屏蔽成为平台的标准功能,Android 为应用提供一致的方式来支持广泛的设备上的号码屏蔽。应用可以利用的其他优势包括:
- 还会屏蔽已屏蔽的来电号码发出的短信
- 借助“备份与同步”功能,屏蔽的号码可以跨重置和设备保留 恢复功能
- 多个应用可以使用相同的屏蔽号码列表
此外,通过 Android 集成运营商应用,这意味着运营商可以 读取设备上的屏蔽号码列表,并执行服务端屏蔽 阻止用户接到骚扰电话和垃圾短信 通过任意媒介(如 VOIP 端点或转接电话)进行传输
有关详情,请参阅
BlockedNumberContract
。
来电过滤
Android 7.0 允许默认的电话应用过滤来电。手机应用执行此操作的方式是实现新的 CallScreeningService
,该方法允许手机应用基于来电的 Call.Details
执行大量操作,例如:
- 拒接来电
- 不允许调用通话记录
- 不向用户显示来电通知
如需了解详情,请参阅 CallScreeningService
的参考文档。
多语言区域支持,更多语言
Android 7.0 现在允许用户在“设置”中选择多个语言区域, 以便更好地支持双语用例。应用可以使用 一个新的 API 来获取用户选定的语言区域,然后提供更复杂的 不同语言区域用户的用户体验 - 例如,以 并且不要求将网页翻译为某种语言的网页 用户已经知道的内容。
除多区域设置支持外,Android 7.0 还扩展了语言范围 提供给用户使用它为常用设备提供超过 25 种款式/规格 例如英语、西班牙语、法语和阿拉伯语。它还针对 100 多种新语言添加了部分支持。
应用可以通过调用 LocaleList.GetDefault()
获取用户设置的语言区域列表。为了支持更多语言区域,Android 7.0
改变资源解析方式请务必测试并验证您的应用
使用新的资源解析逻辑可以按预期运行。
如需了解新的资源解析行为和应遵循的最佳实践,请参阅多语言支持。
新增的表情符号
Android 7.0 引入了更多表情符号和表情符号相关功能,包括 肤色表情符号和支持变化 。如果您的应用支持表情符号, 请遵循以下准则,以便充分利用这些表情符号相关功能。
-
在插入之前,检查设备是否包含表情符号。
要查看
系统字体,请使用
hasGlyph(String)
方法。 - 检查表情符号是否支持变体选择器。 利用变体选择器,您可以 以彩色或黑白显示某些表情符号。 在移动设备上,应用应以彩色(而不是黑白)表示表情符号。不过, 如果您的应用显示内嵌在文本中的表情符号,则应使用黑白变体。 要确定表情符号是否有变量,请使用变量选择器。 如需有关支持变量的字符的完整清单,请参阅有关变量的 Unicode 文档的表情符号变体序列部分。
-
检查表情符号是否支持肤色。Android 7.0 允许用户修改
使表情符号的肤色符合用户偏好。键盘应用应提供视觉元素
针对具有多个肤色的表情符号的指示符,并且应该允许用户
选择自己喜欢的肤色。确定系统表情符号的
肤色修饰符,请使用
hasGlyph(String)
方法。您可以确定哪些表情符号使用肤色,只需阅读 Unicode 文档。
Android 中的 ICU4J API
Android 7.0 现在在 Android 框架下提供一部分 ICU4J API(位于
android.icu
软件包。迁移很简单,主要包括以下步骤:
只需将“com.java.icu
”命名空间更改为
android.icu
。如果您已在
应用,改用 Android 中提供的 android.icu
API
框架可大幅缩减 APK 大小。
如需详细了解 Android ICU4J API,请参阅 ICU4J 支持。
WebView
Chrome 和 WebView 配合使用
从 Android 7.0 及更高版本上的 Chrome 51 版开始,设备上的 Chrome APK 用于提供和呈现 Android 系统 WebView。这种方法可提高内存 同时减少为使视频保持新鲜度所需的带宽 WebView 已是最新版本(因为独立版 WebView APK 将不再更新) 只要 Chrome 保持启用状态即可)。
您可以通过启用“开发者选项”和 选择 WebView 实现。您可以使用设备上安装的任何兼容的 Chrome 版本(Dev、Beta 或 Stable)或单机版 Webview APK,作为 WebView 实现。
多进程
从 Android 7.0 中的 Chrome 版本 51 开始,WebView 将以 当开发者选项“多进程 WebView”时,运行一个单独的沙盒进程 已启用。
我们正在寻求关于 N 中的兼容性和运行时性能的反馈,并随后将在未来 Android 版本中启用多进程 WebView。在本课中, 版本、启动时间回归、总内存用量和软件 预期的渲染性能
如果您在多进程模式中遇到意外问题,请告诉我们。请通过 Chromium 错误跟踪工具与 WebView 团队联系。
Javascript 在页面加载之前运行
从以 Android 7.0 为目标平台的应用开始,JavaScript 上下文将重置 在加载新页面时触发。目前,上下文会沿用到 在新的 WebView 实例中加载第一个页面。
希望将 JavaScript 注入 WebView 的开发者应执行 脚本。
不安全起点上的地理定位
从以 Android 7.0 为目标平台的应用开始,地理定位 API 将仅 允许来自安全源(通过 HTTPS)。此政策的目的是在用户使用不安全连接时保护他们的私人信息。
测试 WebView 测试版
WebView 会定期更新,因此我们建议您经常使用 WebView 的 Beta 版渠道测试应用的兼容性。如需开始在 Android 7.0 上测试 WebView 的预发布版本,请下载并安装 Chrome Dev 或 Chrome 测试版,然后按上述说明在开发者选项下选择它作为 WebView 实现。请通过 Chromium bug 跟踪器,以便在新版本 WebView 发布之前修复问题 发布。
OpenGLTM ES 3.2 API
Android 7.0 添加了框架接口和对 OpenGL ES 3.2 的平台支持,包括:
- 中的所有扩展程序
Android 扩展包 (AEP),
EXT_texture_sRGB_decode
除外。 - 针对 HDR 和延迟着色的浮点帧缓冲区。
- BaseVertex 绘制调用可实现更好的批处理和流式传输。
- 强大的缓冲区访问控制可减少 WebGL 开销。
Android 7.0 上适用于 OpenGL ES 3.2 的框架 API 随
GLES32
类。使用 OpenGL ES 3.2 时,请务必声明
使用 <uses-feature>
标记和
android:glEsVersion
属性。
有关使用 OpenGL ES 的信息,包括如何查看设备的 支持的 OpenGL ES 版本,请参阅 OpenGL ES API 指南。
Android TV 录制
Android 7.0 通过新的录制 API 添加了从 Android TV 输入服务录制和播放内容的功能。基于现有的时移模式构建 TV 输入服务可以控制可以录制的频道数据、 系统会保存录制的会话,并管理用户与录制内容的互动。
如需了解详情,请参阅 Android TV Recording API。
Android for Work
Android for Work 针对运行 Android 7.0 的设备添加了许多新功能和 API。 下面列出了一些要点。要查看完整的功能列表,请参阅 Android Enterprise 功能 列表。
工作资料安全验证
针对 N SDK 的配置文件所有者
可以为在 Google Cloud 中运行的应用指定单独的安全性挑战,
工作资料。当用户尝试打开文件时显示工作挑战
任何工作应用。成功完成安全性挑战可解锁工作资料并将其解密(如果需要)。对于资料所有者,ACTION_SET_NEW_PASSWORD
会提示用户设置工作挑战,ACTION_SET_NEW_PARENT_PROFILE_PASSWORD
会提示用户设置设备锁定。
个人资料所有者可以为工作挑战设置不同的密码政策
(例如 PIN 码需要多长时间,或者是否可以使用指纹
使用 setPasswordQuality()
解锁个人资料),
setPasswordMinimumLength()
和相关方法。个人资料
机主也可以使用DevicePolicyManager
设置设备锁定
返回新的 getParentProfileInstance()
方法。
此外,配置文件所有者可以使用新的 setOrganizationColor()
和 setOrganizationName()
方法针对工作挑战自定义凭据屏幕。
关闭工作应用
在设置了工作资料的设备上,用户可以切换工作模式。工作模式处于 关闭受管理的用户已暂时关闭,这会停用工作资料 后台同步和通知。这包括商家资料所有者 应用。当工作模式关闭时,系统会显示持续状态 图标以提醒用户他们无法启动工作应用。启动器 表示工作应用和微件无法访问。
始终开启的 VPN
设备所有者和资料所有者可以确保工作应用始终能够连接 安全连接。在 启动。
新的 DevicePolicyManager
方法是 setAlwaysOnVpnPackage()
和 getAlwaysOnVpnPackage()
。
因为 VPN 服务无需应用即可由系统直接绑定
交互,VPN 客户端需要为始终开启的 VPN 处理新的入口点。如
之前,由与
操作 android.net.VpnService
。
用户也可以手动设置始终开启的 VPN 客户端,
VPNService
方法使用
设置 > 更多 > VPN。用于启用“始终开启的 VPN”的选项
仅当 VPN 客户端以 API 级别 24 为目标平台时,“设置”中的功能才可用。
自定义配置
应用可以自定义资料所有者和设备所有者配置
并带有企业颜色和徽标。
DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR
自定义
流程颜色。DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI
使用企业徽标来自定义流程。
无障碍增强功能
Android 7.0 现在针对新的设备设置直接在欢迎屏幕上提供“Vision Settings”。这样,用户就可以更轻松地发现和配置 无障碍功能,包括放大手势、字体 大小、显示大小和 TalkBack。
随着这些无障碍功能更为突出,您的用户 在启用这些功能后,用户更有可能试用您的应用。务必测试您的应用 以便尽早启用这些设置您可以前往“设置 > ”启用这些功能。 无障碍功能。
同样在 Android 7.0 中,无障碍服务现在可以帮助行动不便的用户 使用屏幕的障碍人士。这个新 API 允许使用 例如面部跟踪、眼球追踪、点扫描等, 满足这些用户的需求
有关详情,请参阅
GestureDescription
。
直接启动
直接启动可以缩短设备启动时间, 应用的功能会受到限制,即使在意外重启后也是如此。 例如,如果加密的设备在用户睡觉时重新启动, 注册的闹钟、消息和来电现在可以继续通知 和普通用户一样这也意味着,无障碍服务 可在重启后立即可用。
在 Android 7.0 中,直接启动利用基于文件的加密 为系统和应用数据启用精细的加密策略。 系统针对选定的系统数据和显式注册的应用数据使用设备加密存储。默认情况下,凭据加密存储用于 其他系统数据、用户数据、应用和应用数据。
启动时,系统以受限模式启动,并且可以访问
仅限设备加密的数据,而不会对应用或数据进行常规访问。
如果您有想要在此模式下运行的组件,您可以通过在清单中设置标记注册它们。重启后,系统会激活
通过广播 LOCKED_BOOT_COMPLETED
intent。系统确保注册的设备加密应用数据可用
。在用户确认锁定之前,所有其他数据均不可用
屏幕凭据解密。
密钥认证
Android 7.0 引入了密钥认证,这是一种新的安全工具,可帮助 您需要确保存储在设备由硬件支持的密钥对 Keystore 正确保护您的应用 用途。通过使用此工具,您可以更加确信 与驻留在安全硬件中的密钥交互,即使设备 已取得 root 权限。如果您在应用中使用硬件支持的密钥库中的密钥,您应使用此工具,尤其当您使用密钥验证应用中的敏感信息时。
借助密钥认证功能,您可以验证是否已被 RSA 或 EC 密钥对 在设备的 可信执行环境 (TEE) 的要求。通过该工具,您还可以使用 设备外服务(例如应用的后端服务器)来确定和 严格验证密钥对的使用情况和有效性。借助这些功能, 保护密钥对的一道额外的安全保障,即使有人 对设备启用 root 权限,或危及运行 Android 平台的 Android 平台的安全性 。
注意:仅少部分搭载 Android 7.0 的设备支持硬件级密钥认证;其他所有搭载 Android 7.0 的设备则使用软件级密钥认证。验证资源前的准备工作
设备硬件支持的密钥在生产级环境中使用,
应确保设备支持硬件级密钥认证。接收者
您应检查认证证书链是否包含根
由 Google 认证根密钥签名的证书,并且
键中的 attestationSecurityLevel
元素
description 数据结构已设为 TrustedEnvironment 安全性
。
有关详情,请参阅 密钥认证 开发者文档。
网络安全性配置
在 Android 7.0 中,应用可以自定义其安全(HTTPS、TLS)的行为 使用声明式 API 来安全地进行连接, 网络安全配置,而不是使用 容易出错的程序化 API(例如 X509TrustManager)。
支持的功能:
- 自定义信任锚。让应用可以自定义 证书授权机构 (CA) 因其安全连接而受到信任。例如,信任特定的自签名证书或限制应用信任的公共 CA 集。
- 仅用于调试的替换。让应用开发者安全地进行调试 安全连接,而不会增加安装 数据。
- 选择停用明文流量。让应用可以自我保护 意外使用明文流量。
- 证书固定。一项高级功能 限制哪些服务器密钥可信,以建立安全连接。
如需了解详情,请参阅网络安全配置。
默认受信任的证书颁发机构
默认情况下,以 Android 7.0 为目标平台的应用仅信任系统提供的证书 并且不再信任用户添加的证书授权机构 (CA)。如果面向 Android 7.0(API 级别 24)的应用希望信任用户添加的 CA,则应使用网络安全配置以指定信任用户 CA 的方式。
APK 签名方案 v2
Android 7.0 引入了 APK Signature Scheme v2,这是一种新的应用签名方案, 可缩短应用安装时间,增强防范未经授权的行为 对 APK 文件的更改。在默认情况下,Android Studio 2.2 和 Android Plugin for Gradle 2.2 会使用 APK Signature Scheme v2 和传统签名方案来签署您的应用。
虽然我们建议您在应用中采用 APK Signature Scheme v2,但这项新
协议不是强制性的。如果您的应用在使用 APK 时未正确构建
签名方案 v2,您可以停用此新方案。禁用过程会导致 Android Studio 2.2 和 Android Plugin for Gradle 2.2 仅使用传统签名方案来签署您的应用。要仅使用
传统方案,打开模块级 build.gradle
文件,然后
将 v2SigningEnabled false
行添加到您的发布签名
配置:
android { ... defaultConfig { ... } signingConfigs { release { storeFile file("myreleasekey.keystore") storePassword "password" keyAlias "MyReleaseKey" keyPassword "password" v2SigningEnabled false } } }
注意: 如果您使用 APK 为应用签名
签名方案 v2,并进一步更改应用的签名
无效。因此,请使用 zipalign
等工具
使用 APK 签名方案 v2 为应用签名之前,而不是之后。
有关详情,请阅读 Android Studio 文档,其中介绍了如何 如何在 Android Studio 中为应用签名以及如何 配置 用于为应用签名的 build 文件。
作用域目录访问
在 Android 7.0 中,应用可以使用新的 API 请求访问特定的外部存储目录,包括可移动媒体上的目录,如 SD 卡。新 API 大大简化了应用访问标准
外部存储目录,如 Pictures
目录。应用
例如照片应用可以使用这些 API
READ_EXTERNAL_STORAGE
,该角色会授予对所有存储空间的访问权限
或存储访问框架,以便用户导航到
目录。
此外,新的 API 简化了用户向外部应用授权 应用的存储空间。当您使用新的 API 时,系统会使用简单的 清晰地详细说明了应用目录的权限界面 请求访问权限。
有关详情,请参阅 范围 目录访问权限开发者文档。
键盘快捷键辅助工具
在 Android 7.0 中,用户可以按 Meta + / 触发
键盘快捷键屏幕,其中显示同时可用的所有快捷键
从系统和获得焦点的应用中获取。系统会检索这些
从应用的菜单自动添加快捷方式(如果存在快捷方式)。您可以
还可以为屏幕提供经过微调的快捷方式列表。您可以通过替换 onProvideKeyboardShortcuts()
方法来实现此目的。
注意:并非所有设备上都存在 Meta 键 键盘:在 Macintosh 键盘上,它是 Command 键, 按 Windows 键,而按键盘上的 如果是 Pixel C 和 ChromeOS 键盘,则为搜索键。
要在应用的任何位置触发键盘快捷键助手,请调用
requestShowKeyboardShortcuts()
相关活动
自定义指针 API
Android 7.0 引入 Custom Pointer API,以便您可以自定义指针的外观、可见性和行为。此功能 在用户使用鼠标或触控板与 界面对象。默认指针使用标准图标。此 API 还包含 更改指针图标的外观等高级功能 鼠标或触控板的特定移动事件。
如需设置指针图标,请替换 onResolvePointerIcon()
方法中 View
类。此方法使用 PointerIcon
对象绘制与特定动作事件对应的图标。
Sustained Performance API
长期运行的应用的性能可能会显著波动,因为系统会阻止系统芯片在设备组件达到温度限制时启动。此波动表明,应用的目标值并非一成不变 。
为了解决这些限制,Android 7.0 加入了对 持续性能模式,使原始设备制造商 (OEM) 能够提供有关 对长期运行应用的设备性能功能进行定义。应用开发者 可以根据这些提示来调整应用,使之具有可预测、 长时间保持稳定的设备性能水平。
应用开发者可以在 Android 7.0 中试用这一新 API,
仅限 Nexus 6P 设备。要使用此功能
设置窗口的持续性能窗口标志
您希望以持续性能模式运行的应用使用 Window.setSustainedPerformanceMode()
方法设置此标志。系统会自动
当窗口不再对焦时停用此模式。
VR 支持
Android 7.0 为新的 VR 模式添加了平台支持和优化,让开发者 打造高品质移动 VR 体验。对每个广告资源 增强功能,包括允许 VR 应用访问某个专属的 CPU 核心。 在您的应用中,您可以充分利用智能头部跟踪功能、 以及适用于 VR 的立体声通知功能。最重要的是,Android 7.0 的图形延时非常低。如需全面了解如何构建适用于 Android 7.0 的 VR 应用, 请参阅 Android 版 Google VR SDK。
打印服务增强
在 Android 7.0 中,打印服务开发者现在可以显示更多信息, 有关各个打印机和打印作业的信息。
列出各打印机时,打印服务现在可以按打印机进行设置 图标:
- 您可以通过调用
setIconResourceId()
。 - 您可以通过调用
setHasCustomPrinterIcon()
, 并使用onRequestCustomPrinterIcon()
。
此外,您还可以提供按打印机的活动,
通过调用 setInfoIntent()
获取相关信息。
您可以在打印任务中指示打印任务的进度和状态
通过调用
setProgress()
和
setStatus()
。
帧指标 API
借助 Frame Metrics API,应用可以监控其界面呈现情况
性能该 API 通过公开流式传输 Pub/Sub API 来传输帧来提供此功能
应用当前窗口的时间信息。返回的数据
与 adb shell
dumpsys gfxinfo framestats
显示的帧数相当,但不限于过去 120 帧。
您可以使用 Frame Metrics API 来衡量互动级界面
无需 USB 连接即可在生产环境中实现出色性能。此 API
可让系统以比 Google Analytics
adb shell dumpsys gfxinfo
。这种更高的粒度之所以能够实现
系统可以收集应用内特定互动的数据;系统
不需要捕获有关整个应用的
或清除任何全局状态。您可以使用
能够收集性能数据和捕捉界面性能回归
真实用例。
要监控某个窗口,请在
OnFrameMetricsAvailableListener.onFrameMetricsAvailable()
回调方法并在该窗口中注册它。
API 提供了一个 FrameMetrics
对象,其中包含渲染子系统针对帧生命周期中的各个里程碑报告的计时数据。支持的指标包括:UNKNOWN_DELAY_DURATION
、INPUT_HANDLING_DURATION
、ANIMATION_DURATION
、LAYOUT_MEASURE_DURATION
、DRAW_DURATION
、SYNC_DURATION
、COMMAND_ISSUE_DURATION
、SWAP_BUFFERS_DURATION
、TOTAL_DURATION
和 FIRST_DRAW_FRAME
。
虚拟文件
在以前的 Android 版本中,您的应用可以使用 Storage Access 该框架允许用户从他们的云端存储账号中选择文件, 例如 Google 云端硬盘但是,无法用表示已指定 没有直接字节码表示法;每个文件都必须提供 输入流。
Android 7.0 在存储访问机制中添加了“虚拟文件”的概念
框架。通过虚拟文件功能
DocumentsProvider
,用于返回可设置为
与 ACTION_VIEW
intent 结合使用,即使它们
未采用直接字节码表示形式。Android 7.0 还可让您
为用户文件提供替代格式,可以是虚拟文件,也可以是其他格式。
有关打开虚拟文件的更多信息,请参阅 在 存储访问框架指南。