为了更好的帮助开发者定位HarmonyOS应用问题,HarmonyOS提供ErrorManager、HiAppEvent和FaultLogger三种崩溃收集方式采集日志分析。
相较于前三种系统侧提供的开发接口外,也可以使用APMS(应用性能检测服务)和DevEco Service(智能分析平台)这两种现成的应用质量监测方案。
Performance Analysis Kit、APMS和智能分析平台三种崩溃信息收集方式,有以下区别:
方式 | 故障检测范围 | 集成方式 | 成本 | 使用场景 |
|---|---|---|---|---|
Performance Analysis Kit | JS崩溃、C++崩溃、Freeze无响应 | 通过集成系统提供的开发接口 | 需要一定的开发成本 | 业务定制化信息采集 |
APMS | JS崩溃、C++崩溃、Freeze无响应 | 在HarmonyOS 开发者中心上直接开启相关服务 | 零成本快速使用 | 专业数据化分析场景下使用 |
智能分析平台 | JS崩溃、C++崩溃、Freeze无响应 | 直接登入分析平台使用 | 零成本快速使用 | 应用异常分析 |
方式 | 作用范围 | 触发方式 | 场景 | 崩溃表现 |
|---|---|---|---|---|
ErrorManager | JS崩溃、应用冻结 | 主动查询 | 错误通知(进程内处理) | 抛出错误信息,进程不退出 |
FaultLogger | JS崩溃、C++崩溃、应用冻结 | 观察者模式回调 | 主动查询近期故障日志(可实时) | 抛出错误日志,进程不退出 |
HiAppEvent | JS崩溃、C++崩溃、应用冻结 | 观察者模式回调 | 事件记录和监听(下次启动处理) | 进程退出,下次进入应用时处理崩溃信息 |


Q:通过eventInfo.params['threads']获取到的代码行不准确。
A:因为编写的代码是基于ets文件,但是返回的堆栈是ts文件的堆栈,ts文件是编译器基于ets文件编译生成的,可以根据现有ts堆栈解析。可使用分析工具:堆栈轨迹分析。
Q:关于errorManager.on('error')与hiAppEvent.event中hiAppEvent.event.APP_CRASH的区别与使用建议,两者是否有冲突或重复?
A:关于errorManager.on('error'):属于ArkUI错误管理机制,用于捕获运行时错误(如JS崩溃)。关于hiAppEvent.event.APP_CRASH:属于HiAppEvent的崩溃监控能力,专用于捕获应用崩溃事件(包括JS崩溃)。
两者功能不重复,ErrorManager是开发阶段的错误拦截工具(防崩溃),APP_CRASH是线上崩溃监控方案(崩溃后上报)。
两者无冲突,两者独立工作,ErrorManager捕获错误不影响APP_CRASH触发崩溃事件。
Q:从API Version 26开始,通过errorManager监听可捕获异常后,HiAppEvent无法订阅JsCrash崩溃事件,如何获取崩溃日志?
A:从API版本26.0.0开始,如果已经通过errorManager接口监听了可捕获异常,则HiAppEvent将无法订阅JsCrash崩溃问题,两者相互互斥。使用errorManager后,开发者可以自行选择是否退出应用。如果不退出,应用的表现不是崩溃,但上报JsCrash和投递对应事件会推高应用的崩溃指标,导致指标不准。建议在errorManager的回调中增加同步退出操作,相关异常信息已通过回调带给开发者,可参考errorManager使用指导。