欢迎使用 Android 4.4 KitKat!
Android KitKat 将 Android 最具创新性、最美观和最有用的功能带到了更多设备。
本文档简要介绍了开发人员的新增内容。
可在 www.android.com 了解更多关于 KitKat 的用户相关信息。
让 Android 惠及所有人
Android 4.4 旨在在比以往更广泛的设备上运行快速、流畅且响应迅速,其中包括全球数百万台内存仅为 512MB RAM 的入门级设备。
KitKat 简化了每个主要组件以减少内存使用,并引入了新的 API 和工具来帮助您创建创新、响应迅速且内存高效的应用。
制造下一代 Android 设备的 OEM 可以利用 有针对性的建议和选项 来高效运行 Android 4.4,即使在低内存设备上也是如此。Dalvik JIT 代码缓存调整、内核同页合并 (KSM)、交换到 zRAM 和其他优化措施有助于管理内存。新的配置选项允许 OEM 调整进程的内存不足级别、设置图形缓存大小、控制内存回收等等。
在 Android 本身中,系统范围内的更改改进了内存管理并减少了内存占用。核心系统进程经过精简以 使用更少的堆内存,并且现在它们更积极地 保护系统内存 免受消耗大量 RAM 的应用的影响。当多个服务同时启动时(例如网络连接发生变化时),Android 现在 按顺序启动服务,每次少量分组,以避免出现峰值内存需求。
对于开发者而言,Android 4.4 可帮助您交付在所有设备上都高效且响应迅速的应用。新的 API,ActivityManager.isLowRamDevice(),允许您调整应用的行为以匹配设备的内存配置。您可以根据需要修改或停用大型内存功能,具体取决于您要在入门级设备上支持的用例。在此处了解更多关于优化应用以适应低内存设备的信息。
新的工具还可让您深入了解应用的内存使用情况。procstats 工具详细说明了随时间推移的内存使用情况,其中包括前台应用和后台服务的运行时间和内存占用。还提供了一个作为新开发者选项的设备上视图。meminfo 工具得到增强,使其更容易发现内存趋势和问题,并且它还揭示了以前不可见的额外内存开销。
通过主机卡模拟实现新的 NFC 功能
Android 4.4 引入了对通过主机卡模拟 (HCE) 进行基于 NFC 的安全交易的新平台支持,用于支付、忠诚度计划、卡访问、交通卡和其他自定义服务。使用 HCE,Android 设备上的任何应用都可以模拟 NFC 智能卡,使用户可以点击启动他们选择的应用交易 - 设备中不需要预配置的安全元件 (SE)。应用还可以使用新的读取器模式来充当 HCE 卡和其他基于 NFC 的交易的读取器。
Android HCE 模拟基于 ISO/IEC 7816 的智能卡,这些智能卡使用非接触式 ISO/IEC 14443-4 (ISO-DEP) 协议进行传输。如今,许多系统都在使用这些卡,包括现有的 EMVCO NFC 支付基础设施。Android 使用 ISO/IEC 7816-4 中定义的应用标识符 (AID) 作为将交易路由到正确的 Android 应用的基础。
应用在其清单文件中声明它们支持的 AID,以及指示可用支持类型(例如,“支付”)的类别标识符。在多个应用在同一类别中支持同一 AID 的情况下,Android 会显示一个对话框,让用户选择要使用的应用。
当用户在销售点终端点击付款时,系统会提取首选 AID 并将交易路由到正确的应用。应用读取交易数据,并可以使用任何本地或基于网络的服务来验证,然后完成交易。
Android HCE 需要设备中存在 NFC 控制器。大多数 NFC 控制器上已经广泛提供了对 HCE 的支持,这些控制器为 HCE 和 SE 交易提供动态支持。Android 4.4 支持 NFC 的设备将包含轻触支付功能,以便轻松使用 HCE 进行支付。
打印框架
Android 应用现在可以通过 Wi-Fi 或云托管服务(如 Google 云端打印)打印任何类型的內容。在支持打印的应用中,用户可以发现可用的打印机、更改纸张大小、选择要打印的特定页面以及打印几乎任何类型的文档、图像或文件。
Android 4.4 引入了对打印的原生平台支持,以及用于管理打印和添加新型打印机支持的 API。平台提供了一个打印管理器,它在请求打印的应用和处理打印请求的已安装打印服务之间进行协调。打印管理器提供共享服务和系统打印 UI,使用户能够一致地控制从任何应用进行打印。打印管理器还确保内容在从应用到打印服务的跨进程传递过程中的安全性。
打印机制造商可以使用新的 API 来开发他们自己的 **打印服务**——可插入组件,这些组件添加了特定于厂商的逻辑和与特定类型打印机通信的服务。他们可以构建打印服务并通过 Google Play 发布它们,使用户能够轻松地在他们的设备上查找和安装它们。与其他应用一样,您可以随时通过无线方式更新打印服务。
**客户端应用**可以使用新的 API 来向他们的应用添加打印功能,只需进行最少的代码更改。在大多数情况下,您需要向操作栏添加打印操作以及用于选择要打印项目的 UI。您还需要实现 API 来创建打印作业、查询打印管理器的状态以及取消作业。这使您可以打印几乎任何类型的内容,从本地图像和文档到网络数据或呈现到画布的视图。
为了获得最广泛的兼容性,Android 使用 PDF 作为其主要的打印文件格式。打印前,您的应用需要生成内容的正确分页的 PDF 版本。为方便起见,打印 API 提供了原生和 WebView 辅助类,让您可以使用标准 Android 绘图 API 创建 PDF。如果您的应用知道如何绘制内容,它可以快速创建 PDF 用于打印。
大多数运行 Android 4.4 的设备将预安装 Google 云打印作为打印服务,以及几个支持打印的 Google 应用,包括 Chrome、Drive、Gallery 和 QuickOffice。
存储访问框架
新的 **存储访问框架** 使用户能够轻松浏览和打开所有他们首选的文档存储提供商中的文档、图像和其他文件。标准的、易于使用的 UI 使用户能够以一致的方式跨应用和提供商浏览文件和访问最近使用的文件。
云存储或本地存储服务可以通过实现新的文档提供程序类来参与此生态系统,该类封装了他们的服务。提供程序类包含注册提供程序到系统以及管理提供程序中文档的浏览、读取和写入所需的所有 API。文档提供程序可以为用户提供对任何可以表示为文件的远程或本地数据的访问——从文本、照片和壁纸到视频、音频等等。
如果您为云服务或本地服务构建 **文档提供程序**,您可以将其作为现有 Android 应用的一部分提供给用户。下载并安装应用后,用户可以立即从参与该框架的任何应用访问您的服务。这可以帮助您获得曝光度和用户参与度,因为用户将更容易找到您的服务。
如果您开发的 **客户端应用** 管理文件或文档,您可以通过使用新的 CREATE_DOCUMENT 或 OPEN_DOCUMENT intent 来打开或创建文件,从而与存储访问框架集成——系统会自动显示用于浏览文档的标准 UI,包括所有可用的文档提供程序。
您可以一次性为所有提供程序集成您的客户端应用,无需任何特定于厂商的代码。当用户添加或删除提供程序时,他们将继续能够从您的应用访问他们首选的服务,而无需更改或更新您的代码。
存储访问框架与现有的 GET_CONTENT intent 集成在一起,因此用户还可以从新的系统浏览 UI 访问他们以前的所有内容和数据源。应用可以继续使用 GET_CONTENT 作为允许用户导入数据的一种方式。存储访问框架和用于浏览的系统 UI 使用户能够更容易地从更广泛的来源查找和导入他们的数据。
大多数运行 Android 4.4 的设备将预先集成 Google Drive 和本地存储作为文档提供程序,并且与文件一起工作的 Google 应用也使用新的框架。
低功耗传感器
传感器批量处理
Android 4.4 引入了对 **硬件传感器批量处理** 的平台支持,这是一种新的优化,可以显著降低持续传感器活动消耗的电量。
使用传感器批量处理,Android 与设备硬件协同工作,高效地批量收集和传递传感器事件,而不是像检测到那样单独传递。这允许设备的应用处理器保持在低功耗空闲状态,直到传递批量数据。您可以使用标准事件侦听器请求来自任何传感器的批量事件,并且可以控制接收批量的间隔。您还可以请求在批处理周期之间立即传递事件。
传感器批量处理非常适合低功耗、长时间运行的用例,例如健身、位置跟踪、监控等等。它可以使您的应用更高效,并且允许您连续跟踪传感器事件——即使屏幕关闭且系统处于睡眠状态。
传感器批量处理目前在 Nexus 5 上可用,我们正在与我们的芯片组合作伙伴合作,尽快将其引入更多设备。
步数检测器和步数计数器
Android 4.4 还增加了对两个新的复合传感器的平台支持——步数检测器和步数计数器——它们允许您的应用在用户行走、跑步或爬楼梯时跟踪步数。这些新的传感器在硬件中实现,以实现低功耗。
步数检测器分析加速度计输入以识别用户何时迈出一步,然后每次迈出一步时都会触发一个事件。步数计数器跟踪自上次设备重启以来的步数总数,并在步数每次变化时触发一个事件。由于逻辑和传感器管理内置于平台和底层硬件中,因此您无需在应用中维护自己的检测算法。
步数检测器和计数器传感器在 Nexus 5 上可用,我们正在与我们的芯片组合作伙伴合作,尽快将其引入新的设备。
短信提供程序
如果您开发的是使用短信或彩信的消息应用,您现在可以使用 **共享短信提供程序和新的 API** 来管理应用的消息存储和检索。新的短信提供程序和 API 定义了所有处理短信或彩信消息的应用的标准化交互模型。
除了新的提供程序和 API 之外,Android 4.4 还引入了接收消息和写入提供程序的 **新语义**。收到消息时,系统会使用新的 SMS_DELIVER intent 将其直接路由到用户的默认消息应用。其他应用仍然可以使用 SMS_RECEIVED intent 侦听传入的消息。此外,系统现在只允许默认应用将消息数据写入提供程序,尽管其他应用可以随时读取。不是用户默认应用的应用仍然可以发送消息——系统代表应用处理将这些消息写入提供程序,以便用户可以在默认应用中看到它们。
新的提供程序和语义有助于提高安装多个消息应用时的用户体验,并且它们可以帮助您使用完全支持的、向前兼容的 API 来构建新的消息功能。
构建精美应用的新方法
全屏沉浸模式
现在,您的应用可以使用 **设备屏幕上的每个像素** 来展示您的内容和捕获触摸事件。Android 4.4 添加了一种新的全屏沉浸模式,允许您创建从边缘到边缘的全出血 UI,在手机和平板电脑上 **隐藏所有系统 UI**,例如状态栏和导航栏。它非常适合丰富的视觉内容,例如照片、视频、地图、书籍和游戏。
在此新模式下,即使用户正在与您的应用或游戏交互,系统 UI 也保持隐藏状态——您可以从屏幕上的任何位置捕获触摸事件,即使是通常被系统栏占据的区域。这为您提供了一种创建更大、更丰富、更具沉浸感的应用或游戏 UI 的好方法,还可以减少视觉干扰。
为了确保用户始终能够从全屏沉浸模式轻松一致地访问系统 UI,Android 4.4 支持一种新的手势——在沉浸模式下,从屏幕顶部或底部边缘滑动现在会显示系统 UI。
要返回沉浸模式,用户可以触摸栏边界外的屏幕或等待一小段时间让栏自动隐藏。为了获得一致的用户体验,新的手势也适用于以前隐藏状态栏的方法。
用于动画场景的过渡框架
大多数应用都围绕几个关键 UI 状态构建其流程,这些状态会显示不同的操作。许多应用还使用动画来帮助用户了解他们在这些状态中的进度以及每个状态中可用的操作。为了更容易地在您的应用中创建 **高质量动画**,Android 4.4 引入了一个新的过渡框架。
过渡框架允许您定义 **场景**(通常是视图层次结构)和过渡,这些过渡描述了当用户进入或退出场景时如何动画或转换场景。您可以使用几种预定义的过渡类型来基于特定属性(例如布局边界或可见性)来动画场景。还有一种自动过渡类型,它会在场景更改期间自动淡入、移动和调整视图大小。此外,您可以定义自定义过渡来动画对您的应用最重要的属性,如果需要,您可以插入您自己的动画样式。
使用过渡框架,您还可以 **动态动画 UI 的更改**,而无需定义场景。例如,您可以对视图层次结构进行一系列更改,然后让 TransitionManager 自动对这些更改运行延迟过渡。
设置好过渡后,从您的应用调用它们非常简单。例如,您可以调用单个方法来开始过渡,在您的视图层次结构中进行各种更改,然后在下一帧中,动画将自动开始,对您指定的更改进行动画处理。
对于对应用流程中特定场景之间运行的过渡进行自定义控制,您可以使用 TransitionManager。TransitionManager 允许您定义场景之间的关系以及针对特定场景更改运行的过渡。
半透明系统 UI 样式
为了最大限度地发挥内容的影响力,您现在可以使用新的窗口样式和主题来请求 **半透明系统 UI**,包括状态栏和导航栏。为了确保导航栏按钮或状态栏信息的清晰度,系统栏后面会显示微妙的渐变。一个典型的用例是需要显示壁纸的应用。
增强的通知访问
通知侦听器服务现在可以查看使用通知构建器 API 构造的 **有关传入通知的更多信息**。侦听器服务可以访问通知的操作以及新的额外字段——文本、图标、图片、进度、计时器等等——以提取有关通知的更清晰的信息,并以不同的方式呈现这些信息。
Chromium WebView
Android 4.4包含一个全新的WebView实现,其基于Chromium。新的Chromium WebView为您提供了最新的标准支持、性能和兼容性,以便构建和显示您的基于Web的内容。
Chromium WebView广泛支持HTML5、CSS3和JavaScript。它支持Android 30版Chrome中可用的绝大多数HTML5功能。它还带来了更新版本的JavaScript引擎(V8),显著提高了JavaScript性能。
此外,新的Chromium WebView支持使用Chrome DevTools进行远程调试。例如,您可以使用开发机器上的Chrome DevTools实时检查、调试和分析移动设备上的WebView内容。
运行Android 4.4及更高版本的所有兼容设备都包含新的Chromium WebView。您可以立即利用新的WebView,并且只需对现有应用和内容进行最少的修改。在大多数情况下,您的内容将无缝迁移到新的实现。
新的媒体功能
屏幕录制
现在,您可以轻松地直接从Android设备创建高质量的应用视频。Android 4.4增加了对屏幕录制的支持,并提供了一个屏幕录制实用程序,允许您启动和停止连接到Android SDK环境(通过USB)的设备上的录制。这是一种创建应用演练和教程、测试材料、营销视频等的好方法。
使用屏幕录制实用程序,您可以捕获设备屏幕内容的视频,并将视频存储为设备上的MP4文件。您可以根据需要以任何设备支持的分辨率和比特率进行录制,输出将保留显示器的纵横比。默认情况下,实用程序会选择当前方向下等于或接近设备显示分辨率的分辨率。录制完成后,您可以直接从设备共享视频,或将MP4文件提取到主机计算机进行后期制作。
如果您的应用播放您不希望屏幕录制器捕获的视频或其他受保护的内容,您可以使用SurfaceView.setSecure()将内容标记为安全。
您可以通过Android SDK中包含的adb工具访问屏幕录制,使用命令adb shell screenrecord。您也可以通过Android Studio中的logcat启动它。
通过自适应播放切换分辨率
Android 4.4将对自适应播放的正式支持引入了Android媒体框架。自适应播放是MPEG-DASH和其他格式的视频解码器的可选功能,它可以实现播放过程中分辨率的无缝更改。客户端可以开始向解码器馈送新分辨率的输入视频帧,输出缓冲区的分辨率会自动更改,并且不会出现明显的间隙。
Android 4.4中的分辨率切换使媒体应用能够提供显著更好的流视频体验。应用可以使用现有的API在运行时检查自适应播放支持,并使用Android 4.4中引入的新API实现分辨率切换。
DASH的通用加密
Android现在支持MPEG-DASH的通用加密(CENC),提供了一种标准的、多平台的DRM方案来管理和保护内容。应用可以通过Android的模块化DRM框架和平台API来利用CENC以支持DASH。
HTTP实时流
Android 4.4将平台的HTTP实时流(HLS)支持更新为HLS规范版本7(协议版本4)的超集。有关详细信息,请参阅IETF草案。
音频隧道到DSP
为了实现高性能、低功耗的音频播放,Android 4.4增加了对音频隧道到设备芯片组中的数字信号处理器(DSP)的平台支持。使用隧道技术,音频解码和输出效果会卸载到DSP,减少应用处理器的唤醒次数,并降低功耗。
音频隧道可以显著提高电池续航时间,例如在屏幕关闭的情况下使用耳机收听音乐。例如,使用音频隧道,Nexus 5可提供长达60小时的离网音频播放时间,比非隧道音频提高了50%以上。
媒体应用程序可以在受支持的设备上利用音频隧道,而无需修改代码。系统会应用隧道技术来优化音频播放,只要设备可用即可。
音频隧道需要设备硬件支持。目前,音频隧道在Nexus 5上可用,我们正在与芯片组合作伙伴合作,尽快使其在更多设备上可用。
音频监控
应用可以使用Visualizer效果中的新监控工具来获取设备上任何当前正在播放的音频的峰值和RMS电平更新。例如,您可以在音乐可视化器中创造性地使用它,或在媒体播放器中实现播放计量。
响度增强器
媒体播放应用程序可以使用新的LoudnessEnhancer效果来提高语音内容的响度,该效果充当压缩器,其时间常数专门针对语音进行调整。
用于改进AV同步的音频时间戳
音频框架现在可以将音频输出HAL的呈现时间戳报告给应用程序,以实现更好的音频视频同步。音频时间戳允许您的应用程序确定特定的音频帧将在(或已)何时离线呈现给用户;您可以使用时间戳信息更准确地将音频与视频帧同步。
Wi-Fi CERTIFIED Miracast™
Android 4.4设备现在可以根据Wi-Fi联盟Wi-Fi显示规范获得Miracast兼容认证。为了帮助进行测试,一个新的无线显示开发者选项公开了无线显示认证的高级配置控件和设置。您可以在设置>开发者选项>无线显示认证中访问该选项。Nexus 5是一款Miracast认证的无线显示设备。
RenderScript计算
持续的性能改进
当您的应用使用RenderScript时,它们将受益于RenderScript运行时本身的持续性能调整,而无需重新编译。右侧的图表显示了Android 4.4在两个流行芯片组上的性能提升。
GPU加速
在受支持的设备上使用RenderScript的任何应用都将受益于GPU加速,无需更改代码或重新编译。自从Nexus 10首次推出RenderScript GPU加速以来,各种其他硬件合作伙伴都增加了支持。
现在有了Android 4.4,Nexus 5以及Nexus 4、Nexus 7 (2013)和Nexus 10都可使用GPU加速,我们正在与合作伙伴合作,尽快将其引入更多设备。
Android NDK中的RenderScript
现在您可以直接从本机代码利用RenderScript。Android原生开发工具包(NDK)中的一个新的C++ API允许您访问通过框架API可用的相同RenderScript功能,包括脚本内在函数、自定义内核等等。
如果您有大型、性能密集型任务需要在本机代码中处理,您可以使用RenderScript执行这些任务,并将它们与本机代码集成。RenderScript在各种设备上提供出色的性能,并自动支持多核CPU、GPU和其他处理器。
当您构建一个通过NDK使用RenderScript的应用时,您可以像使用框架API提供的RenderScript支持库一样,将其分发到运行Android 2.2或更高版本的任何设备。
图形
GLES2.0 SurfaceFlinger
Android 4.4将其SurfaceFlinger从OpenGL ES 1.0升级到OpenGL ES 2.0。
对虚拟显示的新硬件合成器支持
最新版本的Android硬件合成器HWComposer 1.3支持除了主显示器和外部(例如HDMI)显示器之外的一个虚拟显示器的硬件合成,并改进了OpenGL ES互操作性。
新型连接方式
新的蓝牙配置文件
Android 4.4支持两个新的蓝牙配置文件,允许应用程序支持更广泛的低功耗和媒体交互。通过GATT的蓝牙HID (HOGP)为应用程序提供了与低功耗外围设备(如鼠标、操纵杆和键盘)的低延迟连接。蓝牙MAP允许您的应用程序与附近的设备交换消息,例如用于免提使用的汽车终端或其他移动设备。作为蓝牙AVRCP 1.3的扩展,用户现在可以从他们的蓝牙设备设置系统的绝对音量。
HOGP、MAP和AVRCP的平台支持建立在Google和Broadcom在Android 4.2中引入的Bluedroid蓝牙堆栈之上。Nexus设备和其他提供兼容蓝牙功能的Android兼容设备立即提供支持。
红外发射器
Android 4.4引入了对内置红外发射器的平台支持,以及一个新的API和系统服务,允许您创建应用程序以利用它们。
使用新的API,您可以构建允许用户远程控制附近的电视、调谐器、开关和其他电子设备的应用程序。该API允许您的应用程序检查手机或平板电脑是否有红外发射器,查询其载波频率,然后发送红外信号。
由于API在运行Android 4.4或更高版本的Android设备上是标准的,因此您的应用程序可以在无需编写自定义集成代码的情况下支持尽可能广泛的供应商。
Wi-Fi TDLS支持
Android 4.4通过支持Wi-Fi隧道直接链路设置(TDLS),提供了一种在已经位于同一Wi-Fi网络上的设备之间更快地流式传输媒体和其他数据的方法。
辅助功能
隐藏式字幕的系统范围设置
Android 4.4现在通过添加隐藏式字幕的系统范围首选项来支持跨应用程序的更好的辅助功能体验。用户可以转到设置>辅助功能>字幕来设置全局字幕首选项,例如是否显示字幕以及使用何种语言、文本大小和文本样式。
现在,使用视频的应用程序可以访问用户的字幕设置,并调整演示文稿以满足用户的偏好。新的字幕管理器API允许您检查和监控用户的字幕首选项。字幕管理器为您提供用户的首选字幕状态以及首选区域设置、缩放比例和文本样式。文本样式包括前景色和背景色、边缘属性和字体。
此外,使用VideoView的应用程序可以使用新的API传递字幕流和视频流以进行渲染。系统会根据用户的系统范围设置自动处理视频帧上字幕的显示。目前,VideoView仅支持自动显示WebVTT格式的字幕。
所有显示字幕的应用都应确保检查用户的系统级字幕偏好设置,并尽可能根据这些偏好设置呈现字幕。要更深入地了解特定设置组合的外观,您可以在设置应用中预览不同语言、大小和样式的字幕。
增强的辅助功能 API
Android 4.4 扩展了辅助功能 API,以支持对屏幕元素进行更精确的结构和语义描述和观察。借助新的 API,开发者可以通过向辅助功能服务提供有关屏幕元素的更多信息来提高辅助功能反馈的质量。
在辅助功能节点中,开发者现在可以确定节点是否为弹出窗口,获取其输入类型等等。您还可以使用新的 API 来处理包含网格状信息(例如列表和表格)的节点。例如,您现在可以指定新的支持的操作、集合信息、实时区域模式等等。
新的辅助功能事件允许开发者更密切地跟踪窗口内容中发生的变化,他们现在可以侦听设备上触控探索模式的变化。
对国际用户的支持
针对 RTL 语言环境的图像镜像
如果您的应用的目标用户使用 RTL 脚本,您可以使用新的 API 来声明当用户的语言环境设置包含 RTL 语言时,图像应自动镜像。
将图像声明为自动镜像可以帮助您避免应用中资源的重复,并减小 APK 的大小。当您拥有可用于 LTR 和 RTL 显示的的可重用图像时,您可以将默认版本声明为自动镜像,然后从您的 RTL 资源中省略这些图像。
您可以声明各种类型的图像在您的应用程序代码中自动镜像,例如位图、九宫格、图层、状态列表和其他图像。您还可以使用新的属性在资源文件中将图像声明为自动镜像。
强制使用 RTL 布局
为了更轻松地测试和调试布局镜像问题,而无需切换到 RTL 语言,Android 包含一个新的开发者选项,可在所有应用中强制使用 RTL 布局方向。
强制使用 RTL 布局选项会将设备切换到所有语言环境的 RTL 布局,并在您的当前语言中显示文本。这可以帮助您查找整个应用中的布局问题,而无需在 RTL 语言中显示应用。您可以通过设置 > 开发者选项 > 强制使用 RTL 布局方向访问此选项。
安全增强功能
SELinux(强制模式)
Android 4.4 将其 SELinux 配置从“宽松”更新为“强制”。这意味着在具有强制策略的 SELinux 域中,潜在的策略冲突将被阻止。
改进的加密算法
Android 通过添加对另外两种加密算法的支持进一步提高了安全性。椭圆曲线数字签名算法 (ECDSA) 支持已添加到密钥库提供程序中,从而提高了数字签名的安全性,适用于签名应用程序或数据连接等场景。Scrypt 密钥派生函数用于保护用于全盘加密的加密密钥。
其他增强功能
在多用户设备上,VPN 现在按用户应用。这允许用户通过 VPN 路由所有网络流量,而不会影响设备上的其他用户。此外,Android 现在支持 FORTIFY_SOURCE 级别 2,并且所有代码都使用这些保护进行编译。FORTIFY_SOURCE 已增强以与 clang 配合使用。
用于分析内存使用的工具
Procstats
一个名为procstats的新工具可帮助您分析您的应用使用的内存资源,以及系统上运行的其他应用和服务使用的资源。
Procstats 会跟踪应用随时间的运行情况,提供有关其执行持续时间和内存使用情况的数据,以帮助确定其性能效率。这对于启动在后台运行的服务的应用最为重要,因为它允许您监控这些服务运行的时间以及在运行过程中使用了多少 RAM。Procstats 还将收集有关前台应用程序内存使用情况随时间变化的数据,以确定应用程序的整体内存配置文件。
Procstats 可以帮助您识别您的应用启动的后台服务。您可以跟踪这些服务继续运行的时间以及在运行过程中使用的 RAM 量。Procstats 还允许您在应用处于前台时对其进行分析,使用其随时间的内存使用情况来确定其整体内存配置文件。
您可以通过 Android SDK 中包含的 adb 工具访问 procstats,adb shell dumpsys procstats。此外,有关设备上分析的信息,请参见下面的“进程统计信息”开发者选项。
设备上的内存状态和分析
Android 4.4 包含一个新的开发者选项,使在任何设备或模拟器上运行时更容易分析您的应用的内存配置文件。它对于查看您的应用如何在低 RAM 设备上使用内存和执行特别有用。您可以通过设置 > 开发者选项 > 进程统计信息访问此选项。
进程统计信息选项基于使用新的 procstats 服务收集的数据,显示有关您的应用内存使用情况的各种高级指标。在主屏幕上,您可以看到系统内存状态的摘要。绿色表示以低 RAM 使用率花费的相对时间,黄色表示中等 RAM 使用率,红色表示高(关键)RAM 使用率。
摘要下方是一个列表,总结了每个应用对系统内存的负载。对于每个应用,蓝色条表示其进程的相对计算内存负载(运行时间 x avg_pss),百分比数字表示在后台花费的相对时间。您可以过滤列表以仅显示前台、后台或缓存进程,并且您可以包含或排除系统进程。您还可以将收集数据的持续时间更改为 3、6、12 或 24 小时,并且您可以包含或排除 uss 内存。
要更仔细地查看特定应用的内存使用情况,请点击该应用。对于每个应用,您现在可以看到消耗的内存摘要以及应用运行的收集间隔的百分比。您还可以查看收集期间的平均使用量和最大使用量,以及应用服务的下方及其运行时间的百分比。
使用“进程统计信息”中的数据分析您的应用可以发现问题并为您的应用提出可能的优化建议。例如,如果您的应用运行时间超过应有的时间或在一段时间内使用了过多的内存,则您的代码中可能存在错误,您可以解决这些错误以提高您的应用的性能,尤其是在低 RAM 设备上运行时。