让 Android 惠及每一个人

欢迎使用 Android 4.4 KitKat!

Android KitKat 将 Android 最具创新性、最美观且最实用的功能带给了全球更多的设备。

本文档简要介绍了针对开发者的新功能。

如需了解更多关于 KitKat 面向消费者的信息,请访问 www.android.com。

让 Android 惠及每一个人

Android 4.4 旨在比以往任何时候都更广泛的设备上实现快速、流畅且灵敏的运行体验——包括全球数以百万计仅有 512MB 内存的入门级设备。

KitKat 对每个主要组件进行了精简,以减少内存占用,并引入了新的 API 和工具,帮助您创建更具创新性、响应迅速且内存效率高的应用程序。

制造下一代 Android 设备的原始设备制造商 (OEM) 可以利用针对性的建议和选项,使 Android 4.4 即使在低内存设备上也能高效运行。Dalvik JIT 代码缓存调节、内核同页合并 (KSM)、交换至 zRAM 以及其他优化措施有助于管理内存。新的配置选项允许 OEM 调整进程的内存不足级别、设置图形缓存大小、控制内存回收等。

在 Android 系统本身,整个系统的更改改进了内存管理并减少了内存占用。核心系统进程经过精简以使用更少的堆内存,并且它们现在更积极地保护系统内存,防止应用占用大量内存。当多个服务同时启动(例如在网络连接发生变化时)时,Android 现在会串行启动这些服务(分小组启动),以避免出现内存需求峰值。

对于开发者,Android 4.4 可帮助您在所有设备上交付高效且响应迅速的应用。一个新的 API,ActivityManager.isLowRamDevice(),允许您根据设备的内存配置调整应用的行为。您可以根据需要在入门级设备上支持的用例,修改或禁用内存密集型功能。在此处了解更多关于针对低内存设备优化应用的信息。

新工具还为您提供了对应用内存使用的强大洞察。procstats 工具详细记录了随时间变化的内存使用情况,包括前台应用和后台服务的运行时间和内存占用。设备端也提供了一个作为新开发者选项的查看界面。meminfo 工具经过增强,使发现内存趋势和问题变得更加容易,并且它能揭示之前未显示的额外内存开销。

通过主机卡模拟 (HCE) 实现的新 NFC 功能

Android 4.4 引入了通过主机卡模拟 (HCE) 进行安全 NFC 交易的全新平台支持,可用于支付、会员计划、卡访问、公交卡及其他定制服务。有了 HCE,Android 设备上的任何应用都可以模拟 NFC 智能卡,让用户轻触设备即可使用所选应用发起交易,无需在设备中部署安全元件 (SE)。应用还可以使用新的读卡器模式充当 HCE 卡及其他基于 NFC 的交易的读卡器。

Android HCE 模拟使用非接触式 ISO/IEC 14443-4 (ISO-DEP) 协议进行传输的 ISO/IEC 7816 智能卡。这些卡片被当今许多系统使用,包括现有的 EMVCO NFC 支付基础设施。Android 使用 ISO/IEC 7816-4 中定义的应用程序标识符 (AID) 作为将交易路由至正确 Android 应用的基础。

应用在其清单文件中声明它们支持的 AID,并附带一个类别标识符,用于指示可用的支持类型(例如“支付”)。如果多个应用在同一类别中支持相同的 AID,Android 会显示一个对话框,让用户选择要使用的应用。

当用户在销售终端点触支付时,系统会提取首选 AID 并将交易路由至正确的应用程序。该应用读取交易数据,并可使用任何本地或基于网络的服务进行验证,然后完成交易。

Android HCE 要求设备中具备 NFC 控制器。目前大多数 NFC 控制器已广泛支持 HCE,它们为 HCE 和 SE 交易提供动态支持。支持 NFC 的 Android 4.4 设备将包含“Tap & Pay”(轻触支付)功能,以便使用 HCE 进行便捷支付。

打印框架

Android 应用现在可以通过 Wi-Fi 或云端服务(如 Google 云打印)打印任何类型的内容。在支持打印的应用中,用户可以发现可用打印机、更改纸张尺寸、选择特定页面进行打印,并打印几乎任何种类的文档、图像或文件。

Android 4.4 引入了原生平台打印支持,以及用于管理打印和添加新型打印机支持的 API。该平台提供了一个打印管理器,在请求打印的应用与处理打印请求的已安装打印服务之间进行中介。打印管理器提供共享服务和用于打印的系统 UI,让用户能够一致地控制来自任何应用的打印操作。打印管理器还确保了内容在跨进程传输(从应用到打印服务)时的安全性。

您可以将打印支持添加到您的应用中,或者开发打印服务以支持特定类型的打印机。

打印机制造商可以使用新的 API 开发他们自己的打印服务——即插件式组件,用于添加与特定类型打印机通信所需的供应商特定逻辑和服务。他们可以构建打印服务并通过 Google Play 分发,使用户能够轻松地在设备上查找并安装它们。与其他应用一样,您可以随时通过空中下载 (OTA) 更新打印服务。

客户端应用可以使用新的 API 将打印功能添加到其应用中,且代码修改量极小。在大多数情况下,您只需在操作栏 (Action Bar) 中添加打印操作,并提供一个用于选择打印项目的 UI。您还需要实现 API 以创建打印任务、查询打印管理器的状态以及取消任务。这使您几乎可以打印任何类型的内容,从本地图像和文档到网络数据或渲染到画布的视图。

为了实现最广泛的兼容性,Android 使用 PDF 作为主要的打印文件格式。在打印之前,您的应用需要生成内容的分页 PDF 版本。为方便起见,打印 API 提供了原生和 WebView 辅助类,让您可以使用标准的 Android 绘图 API 创建 PDF。如果您的应用知道如何绘制内容,它就可以快速创建用于打印的 PDF。

大多数运行 Android 4.4 的设备将预装 Google 云打印作为打印服务,同时还会有多个支持打印的 Google 应用,包括 Chrome、Drive、Gallery 和 QuickOffice。

存储访问框架

新的存储访问框架使用户能够轻松地浏览和打开所有首选文档存储提供商中的文档、图像及其他文件。一个标准、易于使用的 UI 让用户可以在不同的应用和提供商之间以一致的方式浏览文件并访问最近使用的文件。

Box 等服务商已将其服务整合到存储访问框架中,使用户能够从系统中的各个应用轻松访问其文档。

云端或本地存储服务可以通过实现一个新的文档提供商类来参与此生态系统,该类封装了它们的服务。提供商类包含了向系统注册提供商以及管理浏览、读取和写入文档所需的所有 API。文档提供商可以使用户能够访问任何可表示为文件的远程或本地数据——从文本、照片和壁纸到视频、音频等。

如果您为云端或本地服务构建文档提供商,您可以将其作为现有 Android 应用的一部分提供给用户。下载并安装该应用后,用户即可从参与该框架的任何应用中立即访问您的服务。这有助于您获得曝光和用户参与度,因为用户将更容易发现您的服务。

如果您开发了一个管理文件或文档的客户端应用,只需使用新的 CREATE_DOCUMENT 或 OPEN_DOCUMENT Intent(意图)来打开或创建文件,即可集成存储访问框架——系统会自动显示标准的文档浏览 UI,包括所有可用的文档提供商。

您只需一次性集成客户端应用,即可适用于所有提供商,无需任何供应商特定的代码。随着用户添加或删除提供商,他们将继续从您的应用访问其首选服务,而无需在您的代码中进行任何更改或更新。

存储访问框架与现有的 GET_CONTENT Intent 进行了集成,因此用户还可以从新的浏览系统 UI 中访问其之前的所有内容和数据源。应用可以继续使用 GET_CONTENT 作为让用户导入数据的一种方式。存储访问框架和系统浏览 UI 让用户更易于从更广泛的来源查找和导入数据。

大多数运行 Android 4.4 的设备将预集成 Google Drive 和本地存储作为文档提供商,且处理文件的 Google 应用也使用了这一新框架。

低功耗传感器

传感器批处理 (Sensor batching)

Android 4.4 引入了对硬件传感器批处理的平台支持,这是一项新的优化措施,可以显著降低持续性传感器活动所消耗的电量。

通过传感器批处理,Android 与设备硬件协同工作,能够高效地以批次方式收集和交付传感器事件,而不是在检测到事件时单独交付。这使得设备的应用程序处理器可以在批次交付前保持在低功耗空闲状态。您可以使用标准的事件监听器从任何传感器请求批量事件,并且可以控制接收批次的间隔。您还可以在批处理周期之间请求立即交付事件。

传感器批处理非常适合低功耗、长时间运行的用例,例如健身、位置追踪、监控等。它不仅能让您的应用更高效,还能让您持续追踪传感器事件——即使在屏幕关闭且系统处于睡眠状态时也是如此。

传感器批处理目前已在 Nexus 5 上可用,我们正与芯片组合作伙伴合作,尽快将其引入更多设备。

Moves 和 Runtastic Pedometer 正在使用硬件步数检测器来提供长时间运行的低功耗服务。

步数检测器和步数计数器

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 包含了一个基于 Chromium 的全新 WebView 实现。新的 Chromium WebView 为您提供最新的标准支持、性能和兼容性,以构建和显示基于 Web 的内容。

Chromium WebView 对 HTML5、CSS3 和 JavaScript 提供了广泛支持。它支持 Chrome for Android 30 中可用的大多数 HTML5 功能。它还带来了更新版本的 JavaScript 引擎 (V8),从而显著提高了 JavaScript 性能。

此外,新的 Chromium WebView 支持使用 Chrome 开发者工具 进行远程调试。例如,您可以在开发机器上使用 Chrome 开发者工具来检查、调试和分析移动设备上实时运行的 WebView 内容。

新的 Chromium WebView 包含在所有运行 Android 4.4 及更高版本的兼容设备上。您可以立即利用新的 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 框架和用于支持 DASH 的平台 API 利用 CENC。

HTTP 实时流 (HLS)

Android 4.4 将平台对 HTTP 实时流 (HLS) 的支持更新为 HLS 规范第 7 版的超集(协议第 4 版)。详情请参阅 IETF 草案。

音频通道至 DSP

为了实现高性能、低功耗的音频播放,Android 4.4 增加了对音频通道 (Audio Tunneling) 至设备芯片组中数字信号处理器 (DSP) 的平台支持。通过通道传输,音频解码和输出效果被卸载至 DSP,从而减少了唤醒应用程序处理器的频率,并降低了电量消耗。

音频通道可以显著改善电池续航,适用于例如在屏幕关闭时通过耳机听音乐等用例。例如,通过音频通道,Nexus 5 的总离网音频播放时间可达 60 小时,较非通道模式下的音频播放增加了 50% 以上。

媒体应用无需修改代码即可在支持的设备上利用音频通道。系统会在设备支持的情况下应用通道优化音频播放。

可视化效果图:LoudnessEnhancer(响度增强)效果如何使语音内容更清晰。

音频通道要求设备硬件支持。目前音频通道已在 Nexus 5 上可用,我们正与芯片组合作伙伴合作,尽快使其在更多设备上可用。

音频监控

应用可以使用 Visualizer 效果中的新监控工具,获取设备上当前播放的任何音频的峰值和 RMS 电平更新。例如,您可以将其创造性地用于音乐可视化工具,或在媒体播放器中实现回放计量。

响度增强器

媒体播放应用可以使用新的 LoudnessEnhancer 效果提高语音内容的响度,该效果充当压缩器,其时间常数专为语音进行了调节。

用于改善音视频同步的音频时间戳

音频框架现在可以向应用报告来自音频输出 HAL 的呈现时间戳,以实现更好的音视频同步。音频时间戳让您的应用能够确定特定的音频帧何时(或已经)在设备外呈现给用户;您可以使用时间戳信息更准确地同步音频与视频帧。

Wi-Fi CERTIFIED Miracast™

Android 4.4 设备现在可以认证为符合 Wi-Fi 联盟 Wi-Fi 显示规范的 Miracast 兼容设备。为了辅助测试,一个新的无线显示开发者选项公开了用于无线显示认证的高级配置控制和设置。您可以在 设置 > 开发者选项 > 无线显示认证 下访问该选项。Nexus 5 是一款 Miracast 认证的无线显示设备。

RenderScript 计算

Android 4.4 与 Android 4.3 相比的性能基准测试,在相同设备(Nexus 7, Nexus 10)上运行。

持续的性能改进

当您的应用使用 RenderScript 时,它们将受益于 RenderScript 运行时本身的持续性能调节,而无需重新编译。右侧图表显示了 Android 4.4 在两款流行芯片组上的性能提升。

GPU 加速

任何在支持的设备上使用 RenderScript 的应用都无需更改代码或重新编译即可受益于 GPU 加速。自 Nexus 10 首次引入 RenderScript GPU 加速以来,其他各类硬件合作伙伴也添加了支持。

现在,随着 Android 4.4 的发布,GPU 加速已在 Nexus 5、Nexus 4、Nexus 7 (2013) 和 Nexus 10 上可用,我们正与合作伙伴合作,尽快将其带到更多设备。

Android NDK 中的 RenderScript

现在,您可以直接从原生代码中利用 RenderScript。Android 原生开发工具包 (NDK) 中的一个新 C++ API 让您能够访问通过框架 API 可用的相同 RenderScript 功能,包括脚本内置函数、自定义内核等。

如果您有大型、性能密集型的任务需要在原生代码中处理,您可以使用 RenderScript 执行这些任务并将其与原生代码集成。RenderScript 在广泛的设备上提供卓越的性能,并自动支持多核 CPU、GPU 和其他处理器。

当您构建一个通过 NDK 使用 RenderScript 的应用时,您可以将其分发至任何运行 Android 2.2 或更高版本的设备,就像使用框架 API 的 RenderScript 支持库一样。

图形

GLES2.0 SurfaceFlinger

Android 4.4 将其 SurfaceFlinger 从 OpenGL ES 1.0 升级到了 OpenGL ES 2.0。

用于虚拟显示器的新 Hardware Composer 支持

最新版本的 Android Hardware Composer (HWComposer 1.3) 除了支持主显示器和外接(例如 HDMI)显示器外,还支持一个虚拟显示器的硬件合成,并改进了 OpenGL ES 的互操作性。

新型连接方式

新的蓝牙配置文件

Android 4.4 支持两种新的蓝牙配置文件,让应用能够支持更广泛的低功耗和媒体交互。Bluetooth HID over GATT (HOGP) 为应用提供了与低功耗外设(如鼠标、操纵杆和键盘)的低延迟连接。Bluetooth MAP 让您的应用能够与附近设备交换消息,例如用于免提使用的车载终端或其他移动设备。作为 Bluetooth AVRCP 1.3 的扩展,用户现在可以从其蓝牙设备设置系统上的绝对音量。

HOGP、MAP 和 AVRCP 的平台支持建立在 Google 和 Broadcom 在 Android 4.2 中引入的 Bluedroid 蓝牙协议栈之上。该支持在 Nexus 设备和其他提供兼容蓝牙功能的 Android 兼容设备上立即可用。

红外发射器 (IR Blasters)

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 区域设置的 Drawable 镜像

如果您的应用针对使用 RTL(从右到左)脚本的用户,您可以使用新的 API 声明当用户的区域设置包含 RTL 语言时,Drawable 应自动镜像。

将 Drawable 声明为自动镜像有助于您防止应用中资产的重复,并减小 APK 的大小。当您拥有既可用于 LTR(从左到右)演示又可用于 RTL 演示的 Drawable 时,您可以将默认版本声明为自动镜像,然后从您的 RTL 资源中省略这些 Drawable。

强制 RTL 布局选项使测试应用的本地化变得更加容易。

您可以在应用代码中将各种类型的 Drawable(如位图、九宫格图片、层、状态列表和其他 Drawable)声明为自动镜像。您还可以通过使用新的属性在资源文件中将 Drawable 声明为自动镜像。

强制 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 还让您可以在应用处于前台时对其进行性能分析,使用其随时间变化的内存使用情况来确定其整体内存配置文件。

新的 procstats 工具让您可以检查应用和服务随时间变化的内存使用情况。

增强的 meminfo 工具让您可以查看应用内存使用的详细信息。

您可以从 Android SDK 中包含的 adb 工具访问 procstats,使用 adb shell dumpsys procstats。此外,有关设备上的性能分析,请参阅下方的“进程状态”开发者选项。

设备上的内存状态和性能分析

Android 4.4 包含一个新的开发者选项,使在任何设备或模拟器上运行应用时分析其内存配置文件变得更容易。这对于查看您的应用如何在 RAM 较少的设备上使用内存并执行任务特别有用。您可以在 设置 > 开发者选项 > 进程状态 下访问该选项。

进程状态是检查应用内存使用的便捷方式。您可以查看您的应用与其他应用的对比情况,并深入查看有关您的应用或其后台服务的具体数据。

进程状态选项会根据使用新的 procstats 服务收集的数据,为您显示有关应用内存使用的各种高级指标。在主屏幕上,您可以查看系统内存状态的摘要。绿色表示处于低 RAM 使用状态的时间相对比例,黄色表示中等 RAM 使用状态,红色表示高(严重)RAM 使用状态。

摘要下方是一个列表,总结了每个应用对系统的内存负载。对于每个应用,蓝色条表示其进程的相对计算内存负载 (运行时间 x 平均 pss),百分比数字表示在后台运行的时间比例。您可以筛选该列表以仅显示前台、后台或缓存的进程,并且可以包含或排除系统进程。您还可以将数据收集时长更改为 3、6、12 或 24 小时,并可以选择包含或排除 uss 内存。

要更仔细地单独查看特定应用的内存使用情况,请点击该应用。对于每个应用,您现在可以看到内存消耗摘要以及应用运行占收集时间间隔的百分比。您还可以查看收集期间的平均和最大使用量,以及应用下方显示的服务及其运行时间百分比。

使用“进程状态”中的数据分析您的应用可以揭示问题并建议可能的优化。例如,如果您的应用运行时间比预期的长,或者在一段时间内使用了过多的内存,则您的代码中可能存在错误,您可以解决这些问题以提升应用的性能,特别是在低 RAM 设备上运行时。

Top