欢迎使用 Android 4.4 KitKat!
Android KitKat 将 Android 所有最具创新、最美妙和最有用的功能推广至全球更多的设备。
本文简要介绍了面向开发者的新变化。
如需详细了解面向消费者的 KitKat,请访问 www.android.com。
让 Android 适用于所有人
Android 4.4 专为在比以往更广泛的设备上快速、流畅且响应迅速地运行而设计,包括全球数以百万计的入门级设备,这些设备的 RAM 可能只有 512MB。
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 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 设备将支持感应式付款,以便使用 HCE 轻松付款。
打印框架
Android 应用现在可以通过 Wi-Fi 或 Google 云打印等云托管服务打印任何类型的内容。在支持打印的应用中,用户可以发现可用的打印机、更改纸张大小、选择要打印的特定页面,以及打印几乎任何类型的文档、图片或文件。
Android 4.4 引入了对打印的原生平台支持,以及用于管理打印和添加新类型打印机支持的 API。该平台提供了一个打印管理器,用于在请求打印的应用与处理打印请求的已安装打印服务之间进行协调。打印管理器提供用于打印的共享服务和系统界面,让用户能够从任何应用一致地控制打印。打印管理器还会确保内容在从应用传递到打印服务的各个进程中的安全性。
打印机制造商可以使用新 API 开发自己的打印服务,这些服务是可插拔的组件,可添加特定于供应商的逻辑和服务,以便与特定类型的打印机进行通信。他们可以构建打印服务并通过 Google Play 分发,让用户能够轻松在其设备上找到并安装这些服务。与其他应用一样,您可以随时通过无线更新打印服务。
客户端应用可以使用新 API 为其应用添加打印功能,而无需进行大量代码更改。在大多数情况下,您需要向操作栏添加打印操作,并添加用于选择要打印的项的界面。您还需要实现 API 来创建打印作业、查询打印管理器的状态以及取消作业。这样,您就可以打印几乎任何类型的内容,从本地图片和文档到网络数据或渲染到画布上的视图。
为了实现最广泛的兼容性,Android 使用 PDF 作为打印的主要文件格式。在打印之前,您的应用需要生成内容的正确分页 PDF 版本。为方便起见,打印 API 提供了原生和 WebView 辅助类,以便您使用标准 Android 绘制 API 创建 PDF。如果您的应用知道如何绘制内容,则可以快速创建 PDF 文件以供打印。
大多数搭载 Android 4.4 的设备都将预安装 Google 云打印作为打印服务,以及支持打印的多个 Google 应用,包括 Chrome、云端硬盘、图库和 QuickOffice。
存储访问框架
借助新的存储访问框架,用户可以轻松在其所有首选文档存储空间提供程序中浏览和打开文档、图片以及其他文件。用户可通过易用的标准界面,跨所有应用和提供程序以统一的方式浏览文件并访问最近用过的文件。
云存储服务或本地存储服务可实现用于封装其服务的新文档提供程序类,从而加入此生态系统。提供程序类包含向系统注册提供程序以及管理提供程序中的浏览、读取和写入文档所需的所有 API。文档提供程序可让用户访问可表示为文件的任何远程或本地数据,包括文本、照片、壁纸、视频、音频等。
如果您为云服务或本地服务构建了文档提供程序,则可以将其作为现有 Android 应用的一部分提供给用户。下载并安装该应用后,用户便可通过参与该框架的任何应用立即访问您的服务。这有助于您提高曝光度和用户互动度,因为用户可以更轻松地找到您的服务。
如果您开发的是用于管理文件或文档的客户端应用,只需使用新的 CREATE_DOCUMENT 或 OPEN_DOCUMENT intent 打开或创建文件,即可与存储访问框架集成 - 系统会自动显示用于浏览文档的标准界面,包括所有可用的文档提供程序。
您只需一次即可为所有提供商集成客户端应用,而无需任何特定于供应商的代码。用户添加或移除提供商后,他们将继续能够通过您的应用访问其首选服务,而无需更改或更新代码。
存储空间访问框架与现有的 GET_CONTENT intent 集成在一起,因此用户还可以通过新的系统界面浏览其之前的所有内容和数据源。应用可以继续使用 GET_CONTENT 来让用户导入数据。存储空间访问框架和用于浏览的系统界面可让用户更轻松地从更多来源查找和导入数据。
大多数搭载 Android 4.4 的设备都将 Google 云端硬盘和本地存储空间预集成为文档提供程序,并且与文件相关的 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 新增了一种全屏沉浸模式,可让您在手机和平板电脑上创建从边到边的无边界界面,隐藏所有系统界面,例如状态栏和导航栏。非常适合丰富的视觉内容,例如照片、视频、地图、图书和游戏。
在新模式下,系统界面会保持隐藏状态,即使用户正在与您的应用或游戏互动也是如此。您可以从屏幕上的任何位置捕获触摸事件,即使是原本由系统栏占据的区域也是如此。这样一来,您就可以在应用或游戏中创建更大、更丰富、更具沉浸感的界面,同时减少视觉干扰。
为了确保用户始终能够从全屏沉浸式模式轻松、一致地访问系统界面,Android 4.4 支持一项新手势:在沉浸式模式下,从屏幕顶部或底部边缘滑动手指现在会显示系统界面。
如需返回沉浸式模式,用户可以轻触栏边界之外的屏幕,或等待一小段时间,让栏自动隐藏。为了提供一致的用户体验,新手势还适用于之前隐藏状态栏的方法。
用于动画场景的转场框架
大多数应用会围绕几个显示不同操作的关键界面状态来构建流程。许多应用还会使用动画来帮助用户了解自己在这些状态中的进度以及每个状态中可执行的操作。为了让您更轻松地在应用中创建高品质动画,Android 4.4 引入了新的转场框架。
借助转场框架,您可以定义场景(通常是视图层次结构)和转场效果,这些场景和转场效果描述了在用户进入或退出场景时如何为其添加动画或进行转换。您可以使用多种预定义的转换类型,根据特定属性(例如布局边界或可见性)为场景添加动画效果。此外,还有一种自动转换类型,可在场景切换期间自动淡出、移动和调整视图大小。此外,您还可以定义自定义转场效果,为对您的应用最重要的属性添加动画效果,并根据需要插入自己的动画样式。
借助过渡框架,您还可以为界面中的更改添加动画效果,而无需定义场景。例如,您可以对视图层次结构进行一系列更改,然后让 TransitionManager 自动对这些更改运行延迟转换。
设置过渡后,您就可以从应用中轻松调用它们。例如,您可以调用单个方法来开始过渡,在视图层次结构中进行各种更改,然后在下一帧中,系统会自动开始动画,以动画形式呈现您指定的更改。
如需对应用流程中特定场景之间运行的转场效果进行自定义控制,您可以使用 TransitionManager。借助 TransitionManager,您可以定义场景与为特定场景更改而运行的转场效果之间的关系。
透明系统 UI 样式
为了充分发挥内容的影响力,您现在可以使用新的窗口样式和主题请求半透明系统界面,包括状态栏和导航栏。为了确保导航栏按钮或状态栏信息清晰可辨,系统栏后面会显示细微的渐变效果。一个典型的用例是,应用需要透过壁纸显示。
增强的通知访问功能
通知监听器服务现在可以详细了解使用通知构建器 API 构建的传入通知。监听器服务可以访问通知的操作以及新的 extra 字段(文本、图标、图片、进度、秒表等),以提取更清晰的通知相关信息,并以不同的方式呈现这些信息。
Chromium WebView
Android 4.4 包含基于 Chromium 的全新 WebView 实现。借助全新的 Chromium WebView,您可以获得最新的标准支持、性能和兼容性,从而构建和显示基于 Web 的内容。
Chromium WebView 广泛支持 HTML5、CSS3 和 JavaScript。它支持适用于 Android 30 版 Chrome 中的大多数 HTML5 功能。它还带来了更新版的 JavaScript 引擎 (V8),可显著提升 JavaScript 性能。
此外,新的 Chromium WebView 支持使用 Chrome 开发者工具进行远程调试。例如,您可以在开发机上使用 Chrome 开发者工具,在移动设备上实时检查、调试和分析 WebView 内容。
所有搭载 Android 4.4 及更高版本的兼容设备都包含新的 Chromium WebView。您可以立即开始使用新版 WebView,并且只需对现有应用和内容进行最少的修改。在大多数情况下,您的内容会顺利迁移到新实现。
新的媒体功能
屏幕录制
现在,您可以直接在 Android 设备上轻松制作应用的优质视频。Android 4.4 添加了对屏幕录制的支持,并提供了一个屏幕录制实用程序,可让您在通过 USB 连接到 Android SDK 环境的设备上开始和停止录制。这是一种全新的方式,可用于制作应用演示和教程、测试材料、营销视频等内容。
借助屏幕录制实用程序,您可以录制设备屏幕内容的视频,并将视频作为 MP4 文件存储在设备上。您可以以设备支持的任意分辨率和比特率进行录制,并且输出内容会保留显示屏的宽高比。默认情况下,该实用程序会选择与当前屏幕方向下的设备显示分辨率相同或接近的分辨率。 录制完成后,您可以直接从设备分享视频,也可以将 MP4 文件拉取到宿主计算机进行后期制作。
如果您的应用播放了您不希望屏幕录制工具捕获的视频或其他受保护内容,您可以使用 SurfaceView.setSecure() 将内容标记为安全内容。
您可以使用 adb shell screenrecord 命令通过 Android SDK 中包含的 adb 工具访问屏幕录制功能。您也可以在 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 Live Streaming (HLS) 支持更新为 HLS 规范第 7 版(协议第 4 版)的超集。如需了解详情,请参阅 IETF 草稿。
DSP 音频隧道
为了实现高性能、低功耗的音频播放,Android 4.4 添加了对将音频隧道化到设备芯片组中的数字信号处理器 (DSP) 的平台支持。借助隧道传输,音频解码和输出效果会卸载到 DSP,从而减少唤醒应用处理器的频率并降低电池用量。
对于屏幕关闭时通过耳机听音乐等用例,音频隧道可以显著延长电池续航时间。例如,借助音频隧道,Nexus 5 的离线音频总播放时长可长达 60 小时,比非隧道音频增加了 50% 以上。
媒体应用可以在受支持的设备上利用音频隧道,而无需修改代码。系统会在设备上有可用隧道时应用隧道来优化音频播放。
音频隧道需要设备硬件支持。目前,音频隧道功能已在 Nexus 5 上推出,我们正在与芯片组合作伙伴合作,以便尽快在更多设备上推出该功能。
音频监控
应用可以使用可视化效果中的新监控工具,获取设备上当前正在播放的任何音频的峰值和 RMS 电平的最新动态。例如,您可以在音乐可视化程序中创造性地使用此功能,或在媒体播放器中实现播放计量。
音量增强器
媒体播放应用可以使用新的 LoudnessEnhancer 效果来提高有声内容的音量,该效果可用作压缩器,其时间常数专为语音进行了调整。
用于改善 AV 同步的音频时间戳
音频框架现在可以将音频输出 HAL 中的呈现时间戳报告给应用,以实现更好的音频-视频同步。借助音频时间戳,您的应用可以确定何时将(或已)向用户在设备外显示特定音频帧;您可以使用时间戳信息更准确地将音频与视频帧同步。
Wi-Fi CERTIFIED Miracast™
Android 4.4 设备现在可以通过 Wi-Fi 联盟 Wi-Fi 显示规范认证,成为 Miracast 兼容设备。为了帮助进行测试,新增了一个无线显示开发者选项,用于显示无线显示认证的高级配置控件和设置。您可以通过以下路径访问该选项:设置 > 开发者选项 > 无线显示认证。Nexus 5 是一款经过 Miracast 认证的无线显示设备。
RenderScript Compute
持续提升性能
当您的应用使用 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 的应用时,您可以将其分发到搭载 Android 2.2 或更高版本的任何设备,就像使用适用于框架 API 的 RenderScript 支持库一样。
图形
GLES2.0 SurfaceFlinger
Android 4.4 将 SurfaceFlinger 从 OpenGL ES 1.0 升级到了 OpenGL ES 2.0。
新的硬件合成器支持虚拟显示
最新版本的 Android 硬件混合渲染器 (HWComposer) HWComposer 1.3 除了支持主外接显示屏(例如 HDMI)之外,还支持对一个虚拟显示屏进行硬件合成,并且改进了 OpenGL ES 互操作性。
新的连接类型
新的蓝牙配置文件
Android 4.4 支持两种新的蓝牙配置文件,让应用能够支持更广泛的低功耗和媒体互动。通过 GATT 的蓝牙 HID (HOGP) 可让应用与鼠标、摇杆和键盘等低功耗外围设备建立低延迟链接。借助 Bluetooth MAP,您的应用可以与附近的设备(例如免触摸使用的汽车终端或其他移动设备)交换消息。作为 Bluetooth AVRCP 1.3 的扩展,用户现在可以通过蓝牙设备在系统上设置绝对音量。
Google 推出的 Bluedroid Bluetooth 堆栈和 Android 4.2 中的 Broadcom 均内置 HOGP、MAP 和 AVRCP 平台支持。Nexus 设备和其他提供兼容蓝牙功能的 Android 兼容设备即将提供此项支持。
红外发射器
Android 4.4 引入了对内置红外发射器的平台支持,以及一个新的 API 和系统服务,让您可以创建应用来充分利用这些功能。
借助新 API,您可以构建应用,让用户远程控制附近的电视、调谐器、开关和其他电子设备。借助此 API,您的应用可以检查手机或平板电脑是否具有红外发射器,查询其载波频率,然后发送红外信号。
由于该 API 是搭载 Android 4.4 或更高版本的 Android 设备的标准 API,因此您的应用无需编写自定义集成代码,即可支持尽可能广泛的供应商。
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 可帮助您识别应用启动的后台服务。您可以跟踪这些服务的持续运行时长以及运行期间的内存用量。Procstats 还可让您在应用处于前台运行时对其进行性能分析,通过一段时间内的内存用量来确定其总体内存配置。
您可以通过 Android SDK 中包含的 adb 工具 adb shell dumpsys procstats 访问 procstats。此外,如需了解设备端性能分析,请参阅下文中的“进程统计信息”开发者选项。
设备内存状态和分析
Android 4.4 包含一个新的开发者选项,可让您更轻松地分析应用在任何设备或模拟器上运行时的内存配置文件。它对于了解应用在 RAM 较小的设备上如何使用内存和运行情况特别有用。您可以通过以下路径访问该选项:设置 > 开发者选项 > 进程统计信息
Process Stats 选项会根据使用新的 procstats 服务收集的数据,显示应用内存用量的各种概要指标。在主屏幕上,您可以看到系统内存状态摘要。绿色表示 RAM 使用量较低所花费的相对时间,黄色表示 RAM 使用量适中,红色表示 RAM 使用量较高(严重)
摘要下方列出了每个应用在系统上的内存负载。对于每个应用,蓝色条表示其进程的相对计算内存负载(运行时 x avg_pss),百分比数表示在后台花费的相对时间量。您可以过滤列表,使其仅显示前台、后台或缓存进程,还可以包含或排除系统进程。您还可以将收集数据的时长更改为 3 小时、6 小时、12 小时或 24 小时,并可以包含或排除 uss 内存。
如需单独详细了解特定应用的内存用量,请点按相应应用。现在,您可以针对每个应用查看内存用量摘要,以及应用运行收集间隔所占百分比。您还可以查看收集期间的平均使用量和最高使用量,以及应用的服务和它们运行所占百分比。
使用“进程统计信息”中的数据分析应用可以发现问题,并为应用建议可能的优化措施。例如,如果应用的运行时间超出预期,或者在一段时间内使用了过多内存,则可能存在代码 bug,您可以解决这些 bug 来提升应用的性能,尤其是在 RAM 较小的设备上运行时。