为了给优质应用奠定坚实的基础,请遵循核心应用质量指南。
该指南定义了所有应用都应达到的最低质量标准。
自适应应用质量
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_平台_兼容性 | 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 | 测试 | 说明 |
|---|---|---|
| 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 |
Webview 不应搭配使用 在 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 | 测试 | 说明 |
|---|---|---|
| 加密算法 | T-Cryptographic_Algorithms | 应用能使用平台提供的强大加密算法和随机数生成器。此外,应用不会实现自定义算法。 |
Google Play
启用应用以在 Google Play 上发布。
政策
| ID | 测试 | 说明 |
|---|---|---|
| Play 内容政策 | T-Play_Content_Policies | 应用会严格遵守 Google Play 开发者内容政策的条款,并且不会提供不当内容,也不会使用其他方的知识产权或品牌。 |
| Play_Content_Rating | T-Play_Content_Policies | 根据内容分级指南恰当设置应用的心智成熟度。 |
应用详情页面
| ID | 测试 | 说明 |
|---|---|---|
| Play_Feature_Graphic | T-Play_功能图片、 T-Play_图片素材资源 |
应用置顶大图遵循这篇支持文章中介绍的准则。确保:
|
| 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 可重现而且在多种不同的设备上发生,则应予以解决。如果错误只在少数设备上出现,但是这些设备十分受欢迎或者是新设备,则您仍须予以解决。 |
测试环境
按以下方式设置测试环境:
模拟器测试:Android 模拟器是一种可在不同 Android 版本和屏幕分辨率下测试应用的绝佳方式。设置模拟设备 (AVD),以代表目标用户群最常用的设备类型和硬件/软件组合。使用以下模拟器(至少)测试各种外形规格的设备:
- Foldables: 7.6" fold-in with outer display(这列在 AVD 管理器中的“Phones”下)
- 平板电脑:Pixel C 9.94 英寸(2,560 像素 x 1,800 像素)
- 移动应用通知测试:将移动设备 / 模拟器与 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 | 开始播放音频。验证应用是否在一秒内开始播放音频,或者提供一个指示条,提示用户正在准备音频数据以供播放。 |
| 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 | 创建 intent 并通过调用 startActivity()(以 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 帧的速度渲染。使用 Profile HWUI rendering 选项来帮助测试应用。 |
| T-StrictMode_Compliance | StrictMode_Compliance |
在应用中启用 密切关注垃圾回收及其对用户体验的影响。 |
稳定性
| ID | 功能 | 说明 |
|---|---|---|
| T-Stability_ANR | Stability_ANR | 使用应用的所有主要功能。验证应用是否不会崩溃或阻塞界面线程,导致出现 ANR(Android 无响应)错误。查看 Google Play 发布前测试报告,以发现潜在的稳定性问题。 |
SDK
| ID | 功能 | 说明 |
|---|---|---|
| T-Android_平台兼容性 | Android_平台_兼容性 | 在最新的 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 Power Profiler或 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 | 硬件 ID | 使用所有主要应用功能。验证应用是否不会出于识别身份的目的而使用任何硬件 ID(例如 IMEI)。 |
认同
| 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 清单文件中为相应导出状态定义的所有应用组件。必须为所有组件显式设置导出的属性。 |
| 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 |
查看应用中打包的所有图形资源、媒体、文本、代码库,以及下载的扩展文件。 |
归档
核心应用质量指南的旧版本: