
Android 用户期望获得高品质的应用。应用的质量直接影响您的应用是否能取得长期成功 — 这包括安装量、用户评分和评价、参与度以及用户保留率。
本页面将介绍一组简明的质量标准及相关测试,旨在帮助您评估应用质量的核心内容。所有 Android 应用均应符合这些标准。
在发布应用之前,请根据这些标准对应用进行测试,确保应用能在多台设备上正常运行,符合 Android 的导航和设计标准,并为在 Google Play 商店开展推广做好准备。当然,您的测试范围远不止这里所介绍的内容,不过本文的目的是说明所有应用都应具备的基本质量特征,因此您可以在测试计划中纳入这些内容。
如果您要为平板电脑或电视等其他 Android 设备创建应用,还应考虑遵循其他质量准则。
视觉设计和用户交互
遵循这些标准能够确保您的应用在适当的地方提供标准的 Android 视觉设计和交互模式,以实现始终如一的直观用户体验。
领域 | ID | 说明 | 测试 |
---|---|---|---|
标准设计 | UX-B1 |
应用须遵循 Android 设计准则,并采用常见的界面模式和图标:
|
CR-全部 |
导航 | UX-N1 |
应用须支持标准系统“返回”按钮导航,不能使用任何自定义的“返回按钮”屏幕提示。 |
CR-3 |
UX-N2 |
所有对话框均可以使用“返回”按钮关闭。 |
CR-3 | |
UX-N3 | 在任何位置按下“主屏幕”按钮即可转到设备的主屏幕。 | CR-1 | |
通知 | UX-S1 |
通知须遵循 Android 设计准则。尤其是:
|
CR-11 |
UX-S2 |
应用只出于以下目的使用通知:
|
CR-11 |
功能
遵循这些标准能够确保您的应用通过合适的权限级别,提供预期的功能行为。
领域 | ID | 说明 | 测试 |
---|---|---|---|
权限 | FN-P1 | 应用只能请求支持核心功能所需的绝对最低级别权限。 | SC-4 |
FN-P2 |
除非与应用的核心功能相关,否则应用不能请求访问敏感数据(例如通讯录或系统日志)或用户付费服务(例如拨号器或短信)的权限。 |
||
安装位置 | FN-L1 |
应用安装在 SD 卡上(如果应用支持)时应可以正常工作。 建议大多数的大型应用(大于 10MB)支持安装到 SD 卡。请参阅应用安装位置开发者指南,了解哪些类型的应用应该支持安装到 SD 卡。 |
SD-1 |
音频 | FN-A1 | 音频不能在屏幕关闭时播放,除非这是应用的核心功能(例如应用是音乐播放器)。 | CR-7 |
FN-A2 | 音频不会在锁定屏幕后播放,除非这是核心功能。 | CR-8 | |
FN-A3 | 音频不能在主屏幕上或其他应用运行时播放,除非这是应用的核心功能。 | CR-1、CR-2 | |
FN-A4 | 音频应在应用返回前台时恢复,或者提示用户播放已处于暂停状态。 | CR-1、CR-8 | |
界面和图形 | FN-U1 |
应用须同时支持横屏和竖屏方向(如果可能)。 两种方向应展现大致相同的特征和操作,并保持同等功能。可接受对内容或视图做出的细微更改。 |
CR-5 |
FN-U2 |
应用在两种显示方向下都占用整个屏幕,不能因为显示方向更改而出现黑边。 可接受为补偿屏幕几何图形的细微差异而出现少许黑边。 |
CR-5 | |
FN-U3 |
应用须正确处理显示方向之间的快速转换,而不会出现呈现问题。 |
CR-5 | |
用户/应用状态 | FN-S1 |
应用转入后台时,不应再有任何服务处于运行状态,除非该服务与应用核心功能相关。 例如,应用不得为了以下目的而让服务保持运行状态:为接收通知而保持网络连接、保持蓝牙连接或保持 GPS 开启。 |
CR-6 |
FN-S2 |
应用须正确保留和恢复用户或应用的状态。 应用在离开前台时须保留用户或应用的状态,并防止因返回导航和其他状态更改而意外丢失数据。返回前台时,应用必须恢复保留的状态和待处理的任何重要的状态性事务,例如对可编辑字段的更改、游戏进程、菜单、视频以及应用或游戏的其他部分。
|
CR-1、CR-3、CR-5 |
兼容性、性能和稳定性
遵循这些标准能够确保应用提供用户期望的兼容性、性能、稳定性和响应能力。
领域 | ID | 说明 | 测试 |
---|---|---|---|
稳定性 | PS-S1 | 应用不会在任何适配的设备上崩溃、强制关闭、冻结或出现其他功能异常。 | CR-全部、SD-1、HA-1 |
性能 | PS-P1 | 应用须迅速加载,如果加载时间超过 2 秒,须向用户提供屏幕反馈(进度指示器或类似提示)。 | CR-all、SD-1 |
PS-P2 | 启用 StrictMode 之后(请参阅下文的 StrictMode 测试),在应用运行期间(包括玩游戏、动画和界面转换期间以及应用的其他部分),指示灯不会呈红色闪烁(StrictMode 的性能警告)。 | PM-1 | |
SDK | PS-T1 | 应用在最新公开版本的 Android 平台上运行,而不会崩溃或丢失核心功能。 | CR-0 |
PS-T2 |
应用须通过设置 targetSdk 值适配最新 SDK,以最大限度减少使用平台提供的任何兼容性回退。
|
SP-1 | |
PS-T3 |
应用通过设置 compileSdk 值,使用最新 SDK 进行构建。
|
SD-1 | |
电池 | PS-B1 | 应用正确支持 Android 6.0+ 中的电源管理功能(低电耗模式和应用待机模式)。如果核心功能被电源管理中断,则只有符合条件的应用才能请求豁免。 | BA-1 |
媒体 | PS-M1 | 在应用正常使用和加载期间,音乐和视频播放流畅,没有中断、卡壳或其他异常声音。 | CR-全部、SD-1、HA-1 |
视觉质量 | PS-V1 |
应用显示的图形、文本、图像和其他界面元素须没有明显的失真、模糊或像素化。
|
CR-全部 |
PS-V2 |
应用须以可接受的方式显示文本和文本块。
|
安全性
遵循这些标准能够确保应用安全处理用户数据和个人信息。
除了此核对清单以外,在 Google Play 商店中发布的应用还必须遵守用户数据政策以保护用户的隐私。
领域 | ID | 说明 | 测试 |
---|---|---|---|
数据 | SC-D1 | 所有不公开数据均存储在应用的内部存储空间中。 | SC-1 |
SC-D2 | 外部存储空间中的所有数据需经过验证后才可加以访问。 | SC-2 | |
SC-D3 |
所有 Intent 广播遵循最佳安全做法。
|
||
SC-D4 | 不能将个人或敏感用户数据记录到系统或应用特定的日志中。 | SC-10 | |
应用组件 | SC-P1 |
只能导出与其他应用共享数据的应用组件,或应由其他应用调用的组件。 这类组件包括 Ativity、服务、广播接收器,尤其是内容提供程序。
无论是否导出应用组件,始终要明确设置 |
SC-5 |
SC-P2 | 与其他应用共享内容的所有应用组件均需定义(且强制使用)相应权限。这类组件包括 Ativity、服务、广播接收器,尤其是内容提供程序。 | SC-4 | |
SC-P3 |
在应用之间共享内容的所有内容提供程序均使用 android:protectionLevel="signature" 。
|
SC-3 | |
网络 | SC-N1 | 所有网络流量均通过 SSL 进行发送。 | SC-9 |
SC-N2 | 应用声明网络安全配置。 | ||
SC-N3 | 如果应用使用 Google Play 服务,则安全提供程序在应用启动时进行初始化。 | ||
库 | SC-U1 | 所有库、SDK 和依赖项均保持最新状态。 | |
WebView | SC-W1 | 在所有 WebView 中,JavaScript 已停用(除非另外要求)。 | SC-6 |
SC-W2 | 如果可能,WebView 仅加载白名单内容。 | SC-8 | |
SC-W3 |
WebView 不对不信任的内容使用 在 Android M 和更高版本中,可以使用 HTML 消息通道。 |
SC-7 | |
执行 | SC-E1 | 应用不能从应用 APK 外部动态加载代码。 | |
加密 | SC-C1 | 应用可使用平台提供的强大加密算法,但不能实现自定义算法。 | |
SC-C2 | 具体地讲,应用可使用适当的安全随机数生成器初始化加密密钥。 |
Google Play
遵循这些标准能够确保您的应用做好在 Google Play 上发布的准备。
领域 | ID | 说明 | 测试 |
---|---|---|---|
政策 | GP-P1 | 应用须严格遵守 Google Play 开发者内容政策的条款,不能提供不当内容,不能使用其他方的知识产权或品牌等。 | GP-全部 |
GP-P2 |
根据内容分级准则合理设置应用的心智成熟度。 |
GP-1 | |
GP-P3 |
应用正确支持 Android 6.0+ 中的电源管理功能(低电耗模式和应用待机模式)。如果核心功能被电源管理中断,则只有符合条件的应用才能请求豁免。请参阅低电耗模式和应用待机模式下对其他用例的支持。 |
GP-4 | |
应用 详情页 | GP-D1 |
应用的置顶大图须遵循此博文中列出的准则。请确保:
|
GP-1、GP-2 |
GP-D2 | 应用的屏幕截图和视频不能显示或提及非 Android 设备。 | GP-1 | |
GP-D3 | 应用的屏幕截图或视频不能以误导性方式展示应用的内容和体验。 | ||
用户支持 | GP-X1 | 对于 Google Play 页面的“评价”标签中常见的用户报告的错误,如果错误可重现而且在多种不同的设备上发生,则应予以解决。如果错误只在少数设备上出现,但是这些设备十分受欢迎或者是新设备,则您仍须予以解决。 | GP-1 |
设置测试环境
如要评估应用的质量,请设置合适的硬件或模拟器环境以进行测试。
理想的测试环境应包括少量实际硬件设备,并且这些设备能够代表目前消费者可用的主要机型和硬件/软件组合。您不需要测试市场上的每种设备,只需关注少量代表性的设备,甚至仅针对每种机型选用一两台设备即可。
如果您不能获得实际硬件设备来进行测试,则应该设置模拟设备 (AVD) 以代表最常见的机型和硬件/软件组合。
如要进行基本测试以外的测试,则可以向测试环境中添加更多设备、更多机型,或新的硬件/软件组合。您也可以增加测试次数、提高复杂性和质量标准。
测试流程
这些测试流程有助于您发现应用中的各类质量问题。您可以在测试计划中组合各项测试或综合运用各组测试。请参阅上述内容,了解将标准与这些测试流程相关联的参考资料。
类型 | 测试 | 说明 |
---|---|---|
核心套件 | CR-0 |
导航到应用的所有部分 — 所有屏幕、对话框、设置和所有用户流程。
|
CR-1 | 在每个应用屏幕上,按下设备的“主屏幕”键,然后从“所有应用”屏幕重新启动应用。 | |
CR-2 | 从每个应用屏幕,使用“最近使用的应用”切换器切换到其他正在运行的应用,然后返回正在测试的应用。 | |
CR-3 | 从每个应用屏幕(和对话框),按下“返回”按钮。 | |
CR-5 | 从每个应用屏幕,旋转设备,在横屏和竖屏方向之间切换至少三次。 | |
CR-6 | 切换到其他应用,以将测试应用转至后台。转到“设置”,检查测试应用在后台时是否有服务在运行。在 Android 4.0 及更高版本中,转到 Apps 屏幕并在“Running”选项卡中找到该应用。 | |
CR-7 | 按下电源按钮,让设备进入休眠状态,然后再次按下电源按钮唤醒屏幕。 | |
CR-8 | 将设备设置为按下电源按钮后锁定。按下电源按钮让设备进入休眠状态,接着再次按下电源按钮唤醒屏幕,然后解锁设备。 | |
CR-9 | 对于带有滑动键盘的设备,将键盘滑进并滑出至少一次。对于带有键盘底座的设备,将设备连接到键盘底座。 | |
CR-10 | 对于具有外部显示端口的设备,请插入外部显示器。 | |
CR-11 | 在通知抽屉式导航栏中触发并查看应用能够显示的所有通知类型。如果适用(Android 4.1 及更高版本),展开通知并点击提供的所有操作。 | |
安装在 SD 卡上 | SD-1 |
对安装到设备 SD 卡(如果应用支持)的应用重复核心套件测试。 要将应用移动到 SD 卡,您可以使用 Settings > App Info > Move to SD Card。 |
硬件加速 | HA-1 |
在启用硬件加速的情况下重复核心套件测试。
要强制启动硬件加速(在设备支持的情况下),请将 |
性能和稳定性 | SP-1 | 查看 Android 清单文件和构建配置,以确保针对可用的最新 SDK(targetSdk 和 compileSdk )构建应用。
|
性能监控 | PM-1 |
在按如下所述启用 StrictMode 分析的情况下重复核心套件测试。 密切关注垃圾回收及其对用户体验的影响。 |
电池 | BA-1 |
对低电耗模式和应用待机模式循环重复执行核心套件测试。 密切注意闹铃、定时器、通知、同步等等。如需了解相关要求和准则,请参阅在低电耗模式和应用待机模式下进行测试。 |
安全性 | SC-1 | 查看外部存储空间中存储的所有数据。 |
SC-2 | 查看如何处理外部存储空间中加载的数据。 | |
SC-3 |
查看 Android 清单文件中为相应 protectionLevel 定义的所有内容提供程序。
|
|
SC-4 | 查看您的应用在设备上使用清单文件、运行时以及使用应用设置 (Settings > App Info) 需要的所有权限。 | |
SC-5 | 查看 Android 清单文件中为相应导出状态定义的所有应用组件。必须明确设置所有组件的导出属性。 | |
SC-6 | 查看应用的网络安全配置,确保配置失败时不执行 Lint 检查。 | |
SC-7 | 对于每个 WebView,导航到需要使用 JavaScript 的页面。 | |
SC-8 | 对于每个 WebView,尝试导航到您不能控制的网站和内容。 | |
SC-9 | 声明停用明文流量的网络安全配置,然后执行应用。 | |
SC-10 | 运行应用并执行所有核心功能,同时观察设备日志。不记录任何不公开的用户信息。 | |
Google Play | GP-1 | 登录到 Google Play Developer Console 以查看您的开发者个人资料、应用说明、屏幕截图、置顶大图、内容分级和用户反馈。 |
GP-2 | 下载置顶大图和屏幕截图,将其缩小以匹配您定位的设备和机型上的显示屏尺寸。 | |
GP-3 | 查看所有图形资源、媒体、文本、代码库,以及应用内打包的其他内容或下载的扩展文件。 | |
GP-4 | 查看低电耗模式和应用待机模式下对其他用例的支持。 | |
付款 | GP-4 | 导航到应用的所有屏幕,并进入所有应用内购买流程。 |
使用 StrictMode 进行测试
对于性能测试,我们建议在您的应用中启用 StrictMode
,并通过其捕获主线程和其他线程上可能影响性能、网络访问、文件读/写等的操作。
您可以使用 StrictMode.ThreadPolicy.Builder
设置每个线程的监控政策,并使用 detectAll()
在 ThreadPolicy
中启用所有支持的监控。
请务必使用 penaltyFlashScreen()
,针对 ThreadPolicy
为违反政策的行为启用可视通知。