HarmonyOS鸿蒙Next中应用崩溃后,用户看不到错误日志,我们怎么收集 bug 信息?
HarmonyOS鸿蒙Next中应用崩溃后,用户看不到错误日志,我们怎么收集 bug 信息? 用户反馈 App 闪退,但我们后台没收到任何日志,调试困难。应该咋弄
可开通应用性能监测服务APMS,APMS服务基于全面的异常类型、实时上报的异常数据提供准确的异常、性能指标度量,支持多维度的灵活查询分析。免集成,开通即可使用
接入APMS后,系统会自动收集到应用的性能数据,开发者可以根据堆栈信息进行问题的原因分析和修复,详情可以参考以下文档:
APMS指导文档可以参考:APMS业务介绍。
APMS崩溃相关可以参考:异常管理。
【背景知识】
崩溃服务已经合入到性能管理服务。实现了和友盟/bugly等类似的崩溃日志上报收集功能。
应用性能管理服务(Application Performance Management Service,简称APMS)是AppGallery Connect(简称AGC)向开发者提供的一个现网质量监测解决方案。它能帮助您监测现网应用的崩溃(CPP CRASH、JS ERROR)、应用无响应(AppFreeze)等稳定性指标,以及应用的启动、页面加载、耗电等性能指标。它提供每个问题发生时的环境信息、堆栈信息等分析数据,并支持基于堆栈关键行进行准确的同类异常汇聚,让您轻松准确快速发现、识别、定位和解决问题。它还支持问题标记、指标告警等辅助能力,帮助您更高效的监测、处理质量问题。
更多关于HarmonyOS鸿蒙Next中应用崩溃后,用户看不到错误日志,我们怎么收集 bug 信息?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
有反馈入口
什么
鸿蒙Next应用崩溃后,可通过以下方式收集bug信息:
-
使用HiLog日志系统:在应用代码中关键位置(如异常捕获、生命周期回调)调用
HiLog接口打印日志。崩溃时,系统会自动将应用日志(包括HiLog输出)保存到设备本地。 -
集成鸿蒙崩溃服务SDK:在项目中集成华为官方提供的
Crash SDK。当应用发生崩溃时,该SDK能自动捕获并生成详细的崩溃报告(包含堆栈、设备信息等),并支持将报告上传到您自己的服务器或华为AppGallery Connect平台进行分析。 -
查询系统日志文件:崩溃后,相关日志会保存在设备的特定目录下(如
/data/log/)。您可以通过hilog命令行工具或文件管理接口(需权限)读取这些日志文件以获取信息。
在HarmonyOS Next中,应用崩溃时,传统的系统日志(logcat)在用户端默认不可见,这是出于隐私和安全考虑。要有效收集崩溃信息,你需要主动在应用中集成崩溃捕获和上报机制。
核心方案:使用 @ohos.hiviewdfx.hiAppEvent 模块
这是HarmonyOS Next官方推荐的应用事件(包括错误、崩溃)打点与上报模块。你需要通过以下步骤主动收集并上报崩溃信息:
-
配置权限与初始化:
- 在
module.json5中声明必要的权限,例如ohos.permission.APP_ABILITY_FOREGROUND等,以确保在应用生命周期内能记录事件。 - 在应用初始化阶段(如
EntryAbility的onCreate中),配置hiAppEvent的工作模式(如设置为DEBUG模式以便在开发阶段查看本地日志)。
- 在
-
关键:全局异常捕获:
- 使用
errorManager或process相关API(具体API名称需参考最新文档,如@ohos.process)注册全局的uncaughtException或uncaughtException事件监听器。 - 在监听器的回调函数中,这是你捕获崩溃现场的关键时机。你需要在此处:
- 立即使用
hiAppEvent.write方法,写入一个明确的错误事件。事件类型可定义为FAULT。 - 在事件的参数中,尽可能包含崩溃的 错误堆栈(stack trace)、错误消息、发生时间、设备信息、应用版本、用户操作上下文 等关键信息。
- 示例代码逻辑:
// 伪代码示例,具体API请查阅官方文档 import hiAppEvent from '@ohos.hiviewdfx.hiAppEvent'; import process from '@ohos.process'; // 注册未捕获异常处理器 process.on('uncaughtException', (err) => { // 立即记录崩溃事件 const eventParams = { error_message: err.message, stack_trace: err.stack, timestamp: new Date().toISOString(), // ... 其他自定义信息 }; hiAppEvent.write({ domain: "YOUR_APP_DOMAIN", name: "APP_CRASH", eventType: hiAppEvent.EventType.FAULT, params: eventParams }).then(() => { // 记录完成后,可执行必要的清理操作,然后退出 process.exit(1); }); }); - 立即使用
- 使用
-
配置事件上报:
- 在
hiAppEvent的配置中,开启事件上报功能,并设置你的 云日志服务地址。HarmonyOS Next的应用崩溃日志通常需要上报到你自己搭建或第三方(如华为AGC的AppGallery Connect崩溃服务)的日志分析平台,系统不会自动帮你收集到开发者后台。 - 确保应用有网络权限,以便能将捕获到的崩溃事件数据包发送到你的服务器。
- 在
-
用户端辅助信息:
- 对于难以复现的崩溃,可以考虑在应用内增加一个“问题反馈”入口,引导用户描述操作步骤,并允许用户手动触发上传最近的本地日志文件(如果
hiAppEvent配置了本地缓存)。
- 对于难以复现的崩溃,可以考虑在应用内增加一个“问题反馈”入口,引导用户描述操作步骤,并允许用户手动触发上传最近的本地日志文件(如果
总结:关键在于 主动监听全局异常,并在异常发生时,立即使用 hiAppEvent 将结构化的崩溃信息记录并上报 到你自己的日志分析系统。不能依赖用户设备上的系统日志输出。

