如需为优质应用奠定坚实的基础,请遵循核心应用质量指南。
该指南定义了所有应用都应满足的最低质量标准。
自适应应用质量
Android 应用可在各种设备上运行,包括紧凑型手机、平板电脑、可折叠设备、桌面设备、外接显示屏、车载信息娱乐系统、电视和 XR 设备。分屏和窗口化模式等窗口模式使应用能够在屏幕的可调整大小部分中运行。
遵循自适应应用质量指南以及核心应用质量指南,以便:
- 打造针对所有外形规格和屏幕尺寸进行优化的应用
- 让您的应用在 Google Play 商品详情和搜索结果中排名更高
- 获取更多用户并提高用户留存率
指南
以下核心指南可帮助您打造基本的优质应用。
用户体验
标准的 Android 视觉设计和互动模式可提供一致且直观的用户体验。
尽可能使用 Material Design 组件(而非 Android 平台组件)来创建应用界面。Material Design 可提供现代 Android 外观和风格,以及跨 Android 版本的界面一致性。
易用性
| ID | 测试 | 说明 |
|---|---|---|
| Consistent_UX | T-Consistent_UX、 T-SD_Card |
应用在所有设备类型上为所有应用用例提供一致的用户体验。 |
| App_Switcher | T-App_Switcher、 T-SD_Card |
当焦点切换到其他应用时,应用会进入后台。当从最近用过的应用切换器中重新激活应用时,应用会返回前台。 |
| Sleep_Resume | T-Sleep_Resume、 T-SD_Card |
当应用是前台应用时,它会在设备进入休眠状态时暂停,并在设备唤醒时恢复。 |
| Lock_Resume | T-Lock_Resume、 T-SD_Card |
当应用是前台应用时,它会在设备锁定时暂停,并在设备解锁时恢复。 |
界面
| ID | 测试 | 说明 |
|---|---|---|
| Display_State_Parity | T-Orientation_Transitions |
在不同的屏幕方向和折叠状态下,所展现的功能特性和操作基本相同。 |
| Fullscreen_Display | T-Orientation_Transitions |
在两种屏幕方向下,应用都会填满应用窗口,并且不会因为配置变更(包括设备折叠和展开)而出现信箱模式现象。 可接受为补偿屏幕几何图形的细微差异而出现少许黑边现象。 |
| Orientation_Transitions | T-Orientation_Transitions | 应用能正确处理屏幕方向之间的快速转换及设备折叠/展开,而不会出现呈现问题或丢失状态。 |
画质
| ID | 测试 | 说明 |
|---|---|---|
| Graphic_Quality | T-Graphic_Quality |
应用显示的图形、文字、图像和其他界面元素没有明显的失真、模糊或像素化现象。
|
| Line_Length | T-Line_Length | 应用通过将每行长度限制为 45-75 个字符(包括空格)来确保文本和文本块的可读性,此限制适用于应用支持的每种语言。 |
| Theme_Support | T-Theme_Support | 应用的内容以及应用访问的所有 Web 内容都支持浅色和深色主题。 |
导航
| ID | 测试 | 说明 |
|---|---|---|
| Back_Button_Nav | T-Back_Nav | 应用支持标准的返回按钮导航,不使用任何自定义的屏幕返回按钮提示。 |
| Back_Gesture_Nav | T-Back_Nav | 应用支持通过手势导航返回和前往主屏幕。 |
| State_Preservation | T-State_Preservation, T-Back_Nav |
应用在离开前台时能够保留用户状态或应用状态,并可防止因返回导航和其他状态更改而意外丢失数据。 返回前台时,应用会恢复保留的状态和任何待处理的状态性事务。例如:对可编辑字段的更改、游戏进度、菜单、视频以及应用的其他部分。
|
通知
| ID | 测试 | 说明 |
|---|---|---|
| Notification_Quality | T-Notification_Quality |
通知会提供与您的应用相关的实用信息。 |
| Conversation_Quality | T-Notification_Quality |
对于即时通讯应用、社交应用和对话:
|
无障碍
| ID | 测试 | 说明 |
|---|---|---|
| Touch_Target_Size | T-Touch_Target_Size | 触摸目标至少为 48 dp。请参阅 Material Design 目标尺寸指南。 |
| Visual_Contrast | T-Visual_Contrast |
应用文本和前景内容与应用背景保持以下对比度:
详细了解颜色和对比度。 |
| Content_Description | T-Content_Description | 使用 contentDescription 描述每个界面元素(TextView 除外)。 |
功能
您的应用应实现以下功能行为。
音频
| ID | 测试 | 说明 |
|---|---|---|
| Audio_Playback_Start | T-Audio_Playback_Start |
当用户发起音频播放时,应用应在一秒钟内执行以下某项操作:
|
| Audio_Focus_Request | T-Audio_Focus_Request | 应用应在音频开始播放时请求音频焦点,并在播放停止时放弃音频焦点。 |
| Audio_Focus_Change | T-Audio_Focus_Change | 应用应处理其他应用对音频焦点的请求。例如,在其他应用播放语音时,应用可能会降低播放音量。 |
| Audio_Playback_Background | T-Audio_Playback_Background | 应用应支持后台播放。 应用必须使用前台服务,以防止系统在应用不再可见后终止应用进程。应用还必须在状态栏或锁屏界面中显示一条常驻且无法关闭的通知,告知用户应用正在运行。 用户应能够使用通知或锁屏控件或已连接配件上的控件来控制播放。 |
| Audio_Notification_Style | T-Audio_Notification_Style | 当应用在后台播放音频时,应用必须创建采用 MediaStyle 样式的通知。 |
| Audio_Playback_Resume | T-Audio_Playback_Resume | 如果应用在后台运行且音频已暂停,则当应用返回前台时,音频会继续播放,否则应用必须向用户表明播放处于暂停状态。 |
视频
| ID | 测试 | 说明 |
|---|---|---|
| Video_PiP | T-Video_PiP | 如果应用播放视频,则应支持画中画播放。 |
| Video_Encoding | T-Video_Encoding | 如果应用对视频进行编码,则应使用 HEVC 视频压缩标准。 |
| Video_Playback_Background | T-Video_Playback_Background | 当应用不是最顶层应用时,应用支持在后台播放视频,包括应用窗口处于以下状态时:
|
共享
| ID | 测试 | 说明 |
|---|---|---|
| System_Sharesheet | T-System_Sharesheet | 如果共享内容,应用应使用 Android Sharesheet。该应用可以推荐自定义解决方案不可用的目标。 |
后台服务
| ID | 测试 | 说明 |
|---|---|---|
| Background_Service_Optimization | T-Background_Service_Optimization |
应用避免在后台运行不必要的长时间服务,以确保用户设备顺畅运行。 注意:系统会对后台服务应用各种限制。 以下是后台服务的不当使用方式:
如需了解详情,请参阅后台任务概览。 |
性能和稳定性
您的应用应提供最佳性能、稳定性、兼容性和响应速度。
性能
| ID | 测试 | 说明 |
|---|---|---|
| App_Startup_Time | T-App_Startup_Time | 应用加载速度快,或者如果应用加载时间超过 2 秒,则会向用户提供屏幕反馈(进度指示器或类似提示)。 |
| Rendering_Performance | T-Rendering_Performance | 应用每 16 毫秒(或更短时间)渲染一帧,以达到每秒至少显示 60 帧。如需有关呈现问题的帮助,请参阅呈现速度缓慢。 |
| StrictMode_Compliance | T-StrictMode_Compliance | 启用 StrictMode(请参阅 StrictMode 测试部分)后,在测试应用时不会看到红色闪烁(来自 StrictMode 的性能警告)。 |
稳定性
| ID | 测试 | 说明 |
|---|---|---|
| Stability_ANR | T-Stability_ANR | 应用不会崩溃或阻塞界面线程,从而导致 ANR(Android 无响应)错误。使用 Google Play 发布前测试报告找出潜在的稳定性问题。部署后,请监控 Google Play 管理中心内的 Android Vitals 页面。 |
SDK
| ID | 测试 | 说明 |
|---|---|---|
| Android_Platform_Compatibility | T-Android_Platform_Compatibility | 应用可在最新公开版 Android 平台上运行,不会发生崩溃或严重影响核心功能。 |
| Target_SDK_Version | T-Target_SDK_Version | 应用通过在应用的模块 build.gradle 文件中设置 targetSdk 值来以最新的 Android SDK 为目标平台(为符合 Google Play 要求)。 |
| Compile_SDK_Version | T-Target_SDK_Version | 应用通过在应用的模块 build.gradle 文件中设置 compileSdk 值来使用最新 Android SDK 进行构建。 |
| SDK_Maintenance | T-SDK_Maintenance、 T-Non_SDK_Interfaces |
使用的所有 Google SDK 或第三方 SDK 均为最新版本。对这些 SDK 所做的任何改进(例如稳定性、兼容性或安全性)都应及时向用户提供。 对于 Google SDK,请使用由 Google Play 服务提供支持的 SDK(若有)。这些 SDK 可向后兼容、接收自动更新、缩减应用软件包的大小,以及高效利用设备上的资源。 |
| Non_SDK_Interfaces | T-Non_SDK_Interfaces | 应用不会使用非 SDK 接口。 |
| Production_Build_Quality | T-Production_Build_Quality | 正式版应用中不包含任何调试库。应用中包含调试库可能会导致性能和安全问题。 |
电池
| ID | 测试 | 说明 |
|---|---|---|
| Power_Management | T-Power_Management |
应用正确支持电源管理功能低电耗模式和应用待机模式。 应用可以请求电源维护豁免。请参阅针对低电耗模式和应用待机模式进行优化中的对其他用例的支持。 |
隐私权和安全
应用会安全地处理用户数据和个人信息,并提供适当级别的权限。
在 Google Play 商店中发布的应用还必须遵守 Google Play 用户数据政策,以保护用户隐私。
权限
| ID | 测试 | 说明 |
|---|---|---|
| Minimize_Permissions | T-Minimize_Permissions | 应用仅请求支持当前用例所需的绝对最低权限。对于某些权限(如位置信息),应用会尽可能使用粗略规范代替精确规范。请参阅尽量减少权限请求。 |
| Sensitive_Permissions | T-Sensitive_Permissions |
仅当与应用的核心使用情形直接相关时,应用才会请求获取访问敏感数据(例如短信或通话记录权限组或位置信息)或者付费服务(例如拨号器或短信)的权限。必须以醒目的方式向用户披露使用这些权限所产生的影响。 根据应用使用权限的方式,您或许可以通过其他方式实现应用的用例,而无需依赖于访问敏感信息。例如,不要请求与用户通讯录相关的权限,而是使用隐式 intent 请求访问权限。 |
| Runtime_Permissions | T-Runtime_Permissions | 应用在请求功能时(而非应用启动期间)请求运行时权限。 |
| Permission_Rationale | T-Permission_Rationale | 应用会清晰地说明需要权限的原因。 |
| Graceful_Degradation | T-Graceful_Degradation | 当用户拒绝或撤消某项权限时,应用会优雅降级。应用不应完全阻止用户访问。 |
数据和文件
| ID | 测试 | 说明 |
|---|---|---|
| Sensitive_Data_Storage | T-Sensitive_Data_Storage、 T-Sensitive_Data_Handling |
所有敏感数据都存储在应用的内部存储空间中。 |
| Sensitive_Data_Logging | T-Sensitive_Data_Logging | 不会将个人数据或敏感用户数据记录到系统日志或应用专用日志中。 |
| Hardware_IDs | T-Hardware_IDs | 应用不会出于识别身份的目的而使用任何不可重置的硬件 ID(例如 IMEI)。 |
数据备份和恢复
| ID | 测试 | 说明 |
|---|---|---|
| App_Data_Backup | T-App_Data_Backup |
应用会在云端备份和设备到设备 (D2D) 传输过程中保留用户数据、设置和应用状态。 实现自动备份并配置 |
| App_Logins_Restoration | T-App_Logins_Restoration |
当用户设置新设备时,应用会自动恢复用户账号和登录状态。 使用 Credential Manager 实现恢复凭据,以便自动重新对用户进行身份验证,而无需强制执行手动登录或账号恢复流程。 |
身份
| ID | 测试 | 说明 |
|---|---|---|
| Autofill_Hints | T-Autofill_Hints | 应用会提供提示以自动填充账号凭证和其他敏感信息(例如:信用卡信息、实际地址和电话号码)。 |
| Credential_Manager | T-Credential_Manager | 应用集成了 Credential Manager for Android,可提供无缝登录体验,统一支持通行密钥、联合身份和密码。 |
| Biometric_Authentication | T-Biometric_Authentication | 应用支持生物识别验证,可保护财务交易或敏感信息(例如重要的用户文档)。 |
应用组件
| ID | 测试 | 说明 |
|---|---|---|
| Component_Export | T-Component_Export |
应用会为所有 activity、service、广播接收器,尤其是 content provider 显式设置 仅导出与其他应用共享数据的应用组件,或应由其他应用调用的组件。 |
| Component_Permissions | T-Component_Permissions |
所有 intent 和广播遵循以下最佳做法:
|
| Component_Protection | T-Component_Protection |
在应用之间共享内容的所有组件均针对自定义权限使用 应用不应依赖于访问已安装软件包的列表。 |
网络
| ID | 测试 | 说明 |
|---|---|---|
| Network_Security_Traffic | T-Network_Security_Traffic | 所有网络流量都通过 SSL 发送。 |
| Network_Security_Configuration | T-Network_Security_Configuration | 应用声明了网络安全配置。 |
| Security_Provider_Initialization | T-Security_Provider_Initialization | 如果应用使用 Google Play 服务,则安全提供程序在应用启动时进行初始化。 |
WebView
| ID | 测试 | 说明 |
|---|---|---|
| WebView_Asset_Loader | T-WebView_Asset_Loader、 T-WebView_Navigation |
请勿使用 setAllowUniversalAccessFromFileURLs() 访问本地内容。而应使用 WebViewAssetLoader。 |
| WebView_JavaScript | T-WebView_JavaScript、 T-WebView_Navigation |
Web 视图不应搭配使用 在 Android 6.0(API 级别 23 及更高级别)上,请改用 HTML 消息通道。 |
执行
| ID | 测试 | 说明 |
|---|---|---|
| App_Bundles | T-App_Bundles |
应用不会从应用 APK 外部动态加载代码。使用 Android App Bundle,其中包括 Play Feature Delivery 和 Play Asset Delivery。 从 2021 年 8 月开始,在 Google Play 商店中发布的所有新应用都必须使用 Android App Bundle。 |
加密
| ID | 测试 | 说明 |
|---|---|---|
| Cryptographic_Algorithms | T-Cryptographic_Algorithms | 应用使用平台提供的强大加密算法和随机数生成器。此外,该应用未实现自定义算法。 |
Google Play
让您的应用能够在 Google Play 上发布。
政策
| ID | 测试 | 说明 |
|---|---|---|
| Play_Content_Policies | T-Play_Content_Policies | 应用严格遵守《Google Play 开发者内容政策》的条款,不提供不当内容,也不使用他人的知识产权或品牌。 |
| Play_Content_Rating | T-Play_Content_Policies | 应用的心智成熟度级别已根据内容分级指南进行了适当设置。 |
应用详情页面
| ID | 测试 | 说明 |
|---|---|---|
| Play_Feature_Graphic | T-Play_Feature_Graphic, T-Play_Graphic_Assets |
应用置顶大图遵循此支持文章中概述的指南。请确保:
|
| Play_Device_References | T-Play_Graphic_Assets | 应用屏幕截图和视频未展示或提及非 Android 设备。 |
| Play_Misleading_Content | T-Play_Graphic_Assets | 应用的屏幕截图或视频未以误导性方式展示应用的内容和体验。 |
用户支持
| ID | 测试 | 说明 |
|---|---|---|
| Play_User_Reviews | T-Play_Content_Policies | 如果 Google Play 页面评价标签页中用户报告的常见 bug 可重现且在许多不同设备上都会发生,则这些 bug 会得到解决。如果某个 bug 仅在少数设备上出现,但这些设备特别受欢迎或属于新设备,您仍应解决该 bug。 |
测试环境
按如下方式设置测试环境:
模拟器测试:Android 模拟器是一种可在不同 Android 版本和屏幕分辨率下测试应用的绝佳方式。设置模拟设备 (AVD),以代表目标用户群最常用的设备类型和硬件/软件组合。使用以下模拟器(至少)测试各种外形规格:
- Foldables:7.6" fold-in with outer display(这列在 AVD 管理器中的“Phones”下)
- Tablet: Pixel C 9.94" (2,560px x 1,800px)
- 移动应用通知测试:将移动设备 / 模拟器与 Wear OS 模拟器(Wear OS Round 1.84")配对
硬件设备:您的测试环境应包括少量实际硬件设备,并且这些设备能够代表消费者可用的主要设备类型和硬件/软件组合。您不需要测试市场上的每种设备。只需关注少量代表性的设备,甚至仅针对每种外形规格选用一两个设备即可。
设备测试实验室:您也可以使用第三方服务(例如 Firebase Test Lab)在更多类型的设备上测试应用。
使用最新的 Android 版本进行测试:除了针对目标用户群测试具有代表性的 Android 版本外,您还应始终针对最新版 Android 进行测试,以确保最新的行为变更不会对应用的用户体验产生负面影响。
如需有关测试(包括单元测试、集成测试和界面测试)的进一步指导,请参阅 Android 应用测试基础知识。
StrictMode
对于性能测试,请在应用中启用 StrictMode。使用 StrictMode 捕获可能会影响性能的操作、网络访问以及文件读写。在主线程和其他线程上查找可能存在问题的操作。
使用 StrictMode.ThreadPolicy.Builder 设置每线程监控政策,并使用 detectAll() 在 ThreadPolicy 中启用所有受支持的监控。
使用 penaltyFlashScreen() 为 ThreadPolicy 启用违规视觉通知。
测试
核心应用质量测试可帮助您评估应用的基本质量。您可以在测试计划中组合各项测试或综合运用多组测试。
用户体验
进行测试,确保提供一致且直观的用户体验。
易用性
| ID | 功能 | 说明 |
|---|---|---|
| T-Consistent_UX | Consistent_UX |
浏览应用的所有部分,包括所有屏幕、对话框、设置和所有用户体验流程。 执行以下操作:
|
| T-App_Switcher | App_Switcher | 从每个应用界面切换到另一个正在运行的应用,然后使用最近应用切换器返回到受测应用。 |
| T-Sleep_Resume | Sleep_Resume | 按下电源按钮,让设备进入休眠状态,然后再次按下电源按钮唤醒屏幕。 |
| T-Lock_Resume | Lock_Resume | 在设备上设置屏幕锁定。按下电源按钮让设备进入休眠状态(锁定设备);然后,再次按下电源按钮以唤醒屏幕并解锁设备。 |
SD 卡
| ID | 功能 | 说明 |
|---|---|---|
| T-SD_Card | Consistent_UX |
在设备的 SD 卡上安装应用(如果应用支持此安装方法),然后执行核心功能测试。 如需将应用移至 SD 卡,请参阅应用设置。 |
界面
| ID | 功能 | 说明 |
|---|---|---|
| T-Orientation_Transitions | Display_State_Parity、 Fullscreen_Display、 Orientation_Transitions |
在每个应用界面上,旋转设备使其在横屏和竖屏方向及折叠和展开状态之间切换至少三次。 验证应用是否执行以下操作:
|
画质
| ID | 功能 | 说明 |
|---|---|---|
| T-Graphic_Quality | Graphic_Quality | 使用应用的所有功能。验证所有视觉元素(包括图形、文字、图片和其他界面元素)是否都没有失真、模糊或像素化现象。 |
| T-Line_Length | Line_Length |
检查应用中的所有文本块。验证文本和文本块行长是否限制在 45-75 个字符(包括空格)以内,以确保可读性。 验证以下内容:
|
| T-Theme_Support | Theme_Support | 验证所有文字在浅色主题和深色主题下均清晰可辨。验证所有视觉元素在浅色和深色主题下是否都清晰可辨且美观。 |
导航
| ID | 功能 | 说明 |
|---|---|---|
| T-Back_Nav | Back_Button_Nav、 Back_Gesture_Nav |
浏览应用的所有部分,包括所有屏幕、对话框、设置和所有用户体验流程。 在每个应用界面中,按返回按钮或使用返回滑动手势。应用应转到上一个屏幕或主屏幕。 |
| T-State_Preservation | State_Preservation | 在每个应用界面中,按设备的主屏幕键或在手势导航中向上滑动,然后从所有应用界面重新启动应用。 |
通知
| ID | 功能 | 说明 |
|---|---|---|
| T-Notification_Quality | Notification_Quality、 Conversation_Quality |
在通知抽屉式导航栏中触发并查看应用能够显示的所有通知类型。展开通知(如果适用,Android 4.1 及更高版本),然后点按所有可用的操作。 |
无障碍
| ID | 功能 | 说明 |
|---|---|---|
| T-Touch_Target_Size | Touch_Target_Size | 验证触摸目标是否能够针对所有屏幕尺寸和配置保持一致且易于触摸的尺寸和位置。如需了解有关无障碍方面的信息,请参阅无障碍功能扫描仪。 |
| T-Visual_Contrast | Visual_Contrast | 验证所有视觉元素的对比度。 |
| T-Content_Description | Content_Description | 验证除 TextView 之外的所有界面元素是否都有内容说明。 |
功能
验证您的应用是否实现了以下功能行为。
音频
| ID | 功能 | 说明 |
|---|---|---|
| T-Audio_Playback_Start | Audio_Playback_Start | 启动音频播放。验证应用是否会在 1 秒内开始播放音频,或提供视觉指示器来表明正在准备播放音频数据。 |
| T-Audio_Focus_Request | Audio_Focus_Request | 启动音频播放。应用应请求音频焦点。当音频播放停止时,应用应放弃音频焦点(对于以 Android 12 [API 级别 31] 及更高版本为目标平台的应用,此操作会自动发生)。 |
| T-Audio_Focus_Change | Audio_Focus_Change | 启动音频播放。在其他应用中启动音频播放。您的应用应响应音频焦点的变化,并停止音频播放或降低播放音量。 |
| T-Audio_Playback_Background | Audio_Playback_Background | 启动音频播放。与另一个非音频应用互动,将其作为前台应用。该应用应继续在后台播放音频,并在状态栏中显示通知。验证您可以使用通知中显示的控件来管理播放。 锁定设备屏幕。应用应继续在后台播放音频,并在锁屏状态下显示通知。验证您可以使用通知中显示的控件来管理播放。 |
| T-Audio_Notification_Style | Audio_Notification_Style | 启动音频播放。与另一个非音频应用互动,将其作为前台应用。验证您的应用是否继续在后台播放音频,并创建了采用 MediaStyle 样式的通知。请参阅与媒体控件完美配合。 |
| T-Audio_Playback_Resume | Audio_Playback_Resume | 启动音频播放。与另一个非音频应用互动,使其成为前台应用。与您的应用互动,使其成为顶层应用。音频应恢复播放或音量应恢复。否则,应用应向用户表明播放已暂停。 |
视频
| ID | 功能 | 说明 |
|---|---|---|
| T-Video_PiP | Video_PiP | 启用应用在画中画模式下播放视频的功能。 |
| T-Video_Encoding | Video_Encoding | 验证应用是否使用 HEVC 视频压缩标准对视频进行编码。 |
| T-Video_Playback_Background | Video_Playback_Background | 开始播放视频。将应用窗口最小化,打开另一个应用以将应用窗口移至后台。在支持桌面模式的设备上,将应用窗口移出可见桌面。验证视频播放在所有情况下都能不间断地继续。 |
共享
| ID | 功能 | 说明 |
|---|---|---|
| T-System_Sharesheet | System_Sharesheet | 通过调用 startActivity()(以 intent 作为参数)来创建 intent 并启动 activity。请参阅使用 Android Sharesheet。您的应用应显示 Android Sharesheet。 |
后台服务
| ID | 功能 | 说明 |
|---|---|---|
| T-Background_Service_Optimization | Background_Service_Optimization | 使用应用的所有主要功能。验证是否未启动长时间运行的后台服务。 切换到其他应用,将您的应用置于后台。前往设置,检查您的应用是否有任何服务在后台运行。在 Android 4.0 及更高版本上,前往应用界面,然后在正在运行标签页中找到该应用。 |
性能和稳定性
验证性能、稳定性和像素级完美的视觉效果。
性能
| ID | 功能 | 说明 |
|---|---|---|
| T-App_Startup_Time | App_Startup_Time | 启动您的应用。验证应用是否能快速加载,或者在加载时间超过 2 秒时提供进度指示器或类似提示。 |
| T-Rendering_Performance | Rendering_Performance | 使用应用的所有主要功能。验证应用是否以至少每秒 60 帧的速度渲染。使用 HWUI 渲染模式分析选项可帮助您测试应用。 |
| T-StrictMode_Compliance | StrictMode_Compliance |
在应用中启用 密切关注垃圾回收及其对用户体验的影响。 |
稳定性
| ID | 功能 | 说明 |
|---|---|---|
| T-Stability_ANR | Stability_ANR | 使用应用的所有主要功能。验证应用不会崩溃或阻塞界面线程,从而导致 ANR(Android 无响应)错误。查看 Google Play 发布前测试报告,找出潜在的稳定性问题。 |
SDK
| ID | 功能 | 说明 |
|---|---|---|
| T-Android_Platform_Compatibility | Android_Platform_Compatibility | 在最新公开版本的 Android 平台上运行您的应用。使用所有主要功能。验证应用不会崩溃,并且在运行时不会丢失任何核心功能。 |
| T-Target_SDK_Version | Target_SDK_Version、 Compile_SDK_Version |
查看 Android 清单文件和 build 配置,确保应用是针对最新可用 SDK(targetSdk 和 compileSdk)构建的。 |
| T-SDK_Maintenance | SDK_Maintenance | 查看应用的 build.gradle 文件,了解是否有任何过时的依赖项。 |
| T-Non_SDK_Interfaces | Non_SDK_Interfaces | 使用 Android Studio lint 工具检测非 SDK 接口使用情况。如需了解其他测试方法,请参阅针对非 SDK 接口的限制。 |
| T-Production_Build_Quality | Production_Build_Quality | 查看应用的 build.gradle 文件,了解其中是否包含任何调试库。 |
电池
| ID | 功能 | 说明 |
|---|---|---|
| T-Power_Management | Power_Management |
在低电耗模式和应用待机模式下使用所有主要应用功能。验证闹钟、定时器、通知和同步功能在低电耗模式维护窗口期间以及应用退出应用待机模式时是否能正常运行。 使用 ADB 命令测试低电耗模式和应用待机模式行为(如需了解相关要求和指南,请参阅在低电耗模式和应用待机模式下进行测试)。 如需诊断非预期的电池耗电情况,请使用 Android Studio 耗电性能分析器或 Battery Historian 工具,然后结合计划的后台工作。 |
隐私权和安全
测试用户期望的隐私和安全保护措施。
权限
| ID | 功能 | 说明 |
|---|---|---|
| T-Minimize_Permissions | Minimize_Permissions | 在清单文件、运行时和设备上的应用设置(设置 > 应用信息)中,查看应用所需的所有权限。 |
| T-Sensitive_Permissions | Sensitive_Permissions | 使用应用中请求权限的所有功能。验证应用是否仅针对核心应用使用情形请求获取访问敏感数据或服务的权限。验证是否已向用户清楚说明授予敏感数据和服务访问权限的影响。 |
| T-Runtime_Permissions | Runtime_Permissions | 使用应用中需要权限的所有功能。验证权限是否以延迟方式请求,即仅在访问功能时请求,而不是在应用启动期间请求。 |
| T-Permission_Rationale | Permission_Rationale | 使用应用中需要权限的所有功能。验证应用是否向用户说明了为何需要这些权限。 |
| T-Graceful_Degradation | Graceful_Degradation | 使用应用中需要权限的所有功能。拒绝或撤消权限。验证应用是否提供了替代用例并继续正常运行。 |
数据和文件
| ID | 功能 | 说明 |
|---|---|---|
| T-Sensitive_Data_Storage | Sensitive_Data_Storage | 查看内部存储空间中存储的所有数据。验证外部存储的数据不是敏感数据。 |
| T-Sensitive_Data_Handling | Sensitive_Data_Storage | 查看如何处理和加工从外部存储空间加载的数据。 |
| T-Sensitive_Data_Logging | Sensitive_Data_Logging | 使用所有主要应用功能,同时监控设备日志。验证是否未记录任何私密用户信息。 |
| T-Hardware_IDs | Hardware_IDs | 使用应用的所有主要功能。验证应用不会出于识别身份的目的而使用任何硬件 ID(例如 IMEI)。 |
数据备份和恢复
| ID | 功能 | 说明 |
|---|---|---|
| T-App_Data_Backup | App_Data_Backup |
在主设备上配置本地偏好设置、数据库和应用设置。执行云端备份或设备到设备 (D2D) 传输,将数据传输到新设备。 转移完成后,在目标设备上启动应用,并验证本地偏好设置、数据库状态和用户设置是否已根据自动备份规则准确恢复。如需了解详细的测试过程,请参阅测试备份和恢复。 |
| T-App_Logins_Restoration | App_Logins_Restoration |
使用通行密钥、密码或 Google 登录功能在主要设备上设置已登录会话。执行云端备份或设备到设备 (D2D) 传输,将数据传输到新设备。 转移完成后,在目标设备上启动应用,并验证是否已使用 Restore Credentials 自动恢复身份验证,而无需显示登录界面或要求进行账号恢复。如需了解详细的测试流程,请参阅测试恢复凭据。 |
身份
| ID | 功能 | 说明 |
|---|---|---|
| T-Autofill_Hints | Autofill_Hints | 使用需要用户输入的所有应用功能。验证应用是否会提供提示,以自动填充账号凭证和其他敏感信息等数据的输入字段。 |
| T-Credential_Manager | Credential_Manager | 登录您的应用。验证该应用是否集成了 Credential Manager for Android,以提供统一支持通行密钥、联合身份和密码的登录体验。 |
| T-Biometric_Authentication | Biometric_Authentication | 使用需要身份验证的所有应用功能。验证应用是否通过生物识别验证来保护财务交易或敏感信息(例如重要的用户文档)。 |
应用组件
| ID | 功能 | 说明 |
|---|---|---|
| T-Component_Export | Component_Export | 查看 Android 清单文件中为相应导出状态定义的所有应用组件。必须为所有组件明确设置 exported 属性。 |
| T-Component_Permissions | Component_Permissions | 在清单文件、运行时和设备上的应用设置(设置 > 应用信息)中,查看应用所需的所有权限。 |
| T-Component_Protection | Component_Protection | 查看 Android 清单文件中定义的所有 Content Provider。确保每个提供商都有适当的 protectionLevel。 |
网络
| ID | 功能 | 说明 |
|---|---|---|
| T-Network_Security_Traffic | Network_Security_Traffic | 声明停用明文流量的网络安全配置,然后测试应用。 |
| T-Network_Security_Configuration | Network_Security_Configuration | 查看应用的网络安全配置。验证配置上的 lint 检查是否均未失败。 |
| T-Security_Provider_Initialization | Security_Provider_Initialization | 验证安全提供程序是否在 Google Play 服务的应用启动时进行初始化。 |
WebView
| ID | 功能 | 说明 |
|---|---|---|
| T-WebView_Asset_Loader | WebView_Asset_Loader | 查看应用的网络安全配置。验证配置上的 lint 检查是否均未失败。 |
| T-WebView_JavaScript | WebView_JavaScript | 对于每个 WebView,前往需要 JavaScript 的页面。 |
| T-WebView_Navigation | WebView_Asset_Loader、 WebView_JavaScript |
在每个 WebView 中,尝试前往并非由您的应用直接加载的网站和内容。 |
执行
| ID | 功能 | 说明 |
|---|---|---|
| T-App_Bundles | App_Bundles | 验证应用是否使用 Android App Bundle,并且不会从应用 APK 外部动态加载代码。 |
加密
| ID | 功能 | 说明 |
|---|---|---|
| T-Cryptographic_Algorithms | Cryptographic_Algorithms | 验证应用是否使用平台提供的强大加密算法和随机数生成器。此外,还要验证应用是否未实现自定义算法。 |
Google Play
验证您的应用是否已准备好在 Google Play 上发布。
政策
| ID | 功能 | 说明 |
|---|---|---|
| T-Play_Content_Policies | Play_Content_Policies, Play_Content_Rating, Play_User_Reviews |
登录 Google Play 管理中心,查看您的开发者资料、应用说明、屏幕截图、置顶大图、内容分级和用户反馈。 |
应用详情页面
| ID | 功能 | 说明 |
|---|---|---|
| T-Play_Feature_Graphic | Play_Feature_Graphic | 下载置顶大图和屏幕截图,并将其缩小,以匹配目标设备和外形规格的显示尺寸。 |
| T-Play_Graphic_Assets | Play_Feature_Graphic, Play_Device_References, Play_Misleading_Content |
检查应用或扩展文件下载内容中打包的所有图形资源、媒体、文本、代码库和其他内容。 |
归档
旧版核心应用质量指南: