# 应用质量概览

DFX（Design For eXcellence）是指产品的非功能性设计的总称，其中X代表产品的某个特性或产品生命周期的某个阶段。HarmonyOS DFX子系统提供了一系列DFX功能，帮助开发者创建高质量的应用和游戏。这些功能包括：

*   DFR（Design For Reliability）可靠性设计：提供应用崩溃、卡死、资源泄漏、地址越界等故障的检测与恢复功能。
*   DFT（Design For Testability）可测试性设计：提供日志、跟踪、调试信息、命令行工具等，以支持应用的观测与调试。
*   DFP（Design For Performance）性能设计：提供应用启动慢、卡顿、丢帧等性能问题的检测功能，以及hitrace、hiperf等分析工具，帮助开发者优化性能。

这些DFX功能涵盖了故障管理、问题上报、问题分析等多个方面，具体能力分类详见下方表格：

#### 基础能力

| 场景 | 子场景 | 组件或工具 |
| --- | --- | --- |
| 故障管理 | 稳定性检测 | 崩溃检测 |
| Resource Leak（资源泄漏）检测 |  |  |
| AppFreeze（应用冻屏）检测 |  |  |
| AddrSanitizer（地址越界）检测 |  |  |
| 任务超时检测 |  |  |
| 性能检测 | 性能检测 |  |
| 功耗检测 | 功耗检测 |  |
| 错误管理 | errorManager（错误管理组件） |  |
| 故障恢复 | appRecovery（应用恢复组件） |  |
| 问题上报 | 事件订阅 | HiAppEvent（事件打点组件） |
| 问题分析 | 日志 | HiLog（日志打印组件） |
| 跟踪 | HiTraceMeter（进程轨迹跟踪组件） |  |
| HiTraceChain（分布式调用链跟踪组件） |  |  |
| 调试信息 | HiDebug（调试信息获取组件） |  |
| 命令行工具 | hdc（调试连接器命令行工具） |  |
| hilog（HiLog命令行工具） |  |  |
| hilogtool（HiLog日志解析工具） |  |  |
| hidumper（系统信息导出工具） |  |  |
| hitrace（HiTraceMeter命令行工具） |  |  |
| hiperf（性能数据抓取工具） |  |  |
| 更多 |  |  |
| 界面化工具 | SmartPerf(性能功耗调优工具)，DevEco Studio(HarmonyOS应用集成开发环境) |  |

#### 场景化知识地图

在开发及运维过程中，如果遇到稳定性、性能、功耗相关的问题，可以参考如下场景化知识地图进行分析和解决。

| 场景 | 二级场景 | 开发态检测 | 运行态检测 | 分析方法 | 案例 |
| --- | --- | --- | --- | --- | --- |
| 稳定性 | 地址越界 | 地址越界检测工具原理 使用ASan检测内存错误 使用HWASan检测内存错误 使用GWP-ASan检测内存错误 | 地址越界类问题检测方法 | 地址越界类问题分析方法 地址越界问题类型 | 地址越界类问题案例 |
| 资源泄漏 | 开发态资源泄漏类问题检测 | 运行态资源泄漏类问题检测方法 | 内存泄漏分析方法 句柄泄漏分析方法 线程泄漏分析方法 | native内存泄漏类问题案例 PixelMap泄漏导致ashmem内存泄漏案例 句柄泄漏类问题案例 线程泄漏类问题案例 更多… |  |
| 应用冻屏 | - | THREAD_BLOCK_6S 应用主线程卡死超时检测 APP_INPUT_BLOCK 用户输入响应超时检测 | 应用冻屏类问题分析 | 应用冻屏类问题案例 |  |
| 应用异常退出 | 使用TSan检测线程问题 使用UBSan检测未定义行为 | JS Crash（进程崩溃）检测 Cpp Crash（进程崩溃）检测 应用被查杀问题检测 | JS Crash类问题分析方法 CppCrash类问题分析方法 应用被查杀类问题分析方法 | 应用异常退出类问题案例 |  |
| 性能 | 应用启动慢 | CodeLinter静态扫描工具 AppAnalyzer动态检测应用性能问题 | 启动耗时类问题检测方法 主线程超时类问题检测方法 | - | - |
| 应用卡顿、丢帧 | 滑动丢帧类问题检测方法 | 点击响应时延分析 点击完成时延分析 Web页面内点击响应时延分析 Web加载流程及完成时延分析 跨线程序列化耗时问题分析 丢帧问题分析 内存基础知识及优化思路 | 优化Web场景下的加载性能问题 优化应用冷启动时延问题 优化长列表加载慢丢帧问题 优化瀑布流加载慢丢帧问题 更多... |  |  |
| 功耗 | 应用异常耗电 | HiSmartPerf功耗检测 Profiler功耗检测 | 运行态功耗检测 | CPU 高负载问题分析思路 前台不可见动效问题分析思路 | Vsync低功耗优化 Buffer低功耗优化 |

对于开发态检测，除上表提到的检测方法外，还可以使用专业的测试工具DevEco Testing对应用进行质量测试。

#### 常用术语

下表列出了一些常见的应用质量相关术语方便开发者进行查阅，更多的术语可查看Performance Analysis Kit术语。

| 场景 | 常用术语 |
| --- | --- |
| 通用 | log版本，nolog版本，debug版本应用，release版本应用 |
| 稳定性 | CPP Crash，JS Crash，AppFreeze，ASan，HWASan，GWP-ASan，TSan，UBSan |
| 性能 | 丢帧 |
| 功耗 | 前台任务，后台任务，帧率，LTPO，冗余绘制，不可见动效，HWC |
| 内存 | VSS，PSS，RSS，脏页，干净页，匿名页，文件页 |

#### 相关主题

*   Performance Analysis Kit（性能分析服务）指南
*   Performance Analysis Kit（性能分析服务）API参考
*   应用质量FAQ
*   HarmonyOS应用DFX能力介绍（视频）