HarmonyOS鸿蒙Next中应用崩溃后,用户看不到错误日志,我们怎么收集 bug 信息?

HarmonyOS鸿蒙Next中应用崩溃后,用户看不到错误日志,我们怎么收集 bug 信息? 用户反馈 App 闪退,但我们后台没收到任何日志,调试困难。应该咋弄

5 回复

可开通应用性能监测服务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信息:

  1. 使用HiLog日志系统:在应用代码中关键位置(如异常捕获、生命周期回调)调用HiLog接口打印日志。崩溃时,系统会自动将应用日志(包括HiLog输出)保存到设备本地。

  2. 集成鸿蒙崩溃服务SDK:在项目中集成华为官方提供的Crash SDK。当应用发生崩溃时,该SDK能自动捕获并生成详细的崩溃报告(包含堆栈、设备信息等),并支持将报告上传到您自己的服务器或华为AppGallery Connect平台进行分析。

  3. 查询系统日志文件:崩溃后,相关日志会保存在设备的特定目录下(如/data/log/)。您可以通过hilog命令行工具或文件管理接口(需权限)读取这些日志文件以获取信息。

在HarmonyOS Next中,应用崩溃时,传统的系统日志(logcat)在用户端默认不可见,这是出于隐私和安全考虑。要有效收集崩溃信息,你需要主动在应用中集成崩溃捕获和上报机制。

核心方案:使用 @ohos.hiviewdfx.hiAppEvent 模块

这是HarmonyOS Next官方推荐的应用事件(包括错误、崩溃)打点与上报模块。你需要通过以下步骤主动收集并上报崩溃信息:

  1. 配置权限与初始化

    • module.json5 中声明必要的权限,例如 ohos.permission.APP_ABILITY_FOREGROUND 等,以确保在应用生命周期内能记录事件。
    • 在应用初始化阶段(如 EntryAbilityonCreate 中),配置 hiAppEvent 的工作模式(如设置为 DEBUG 模式以便在开发阶段查看本地日志)。
  2. 关键:全局异常捕获

    • 使用 errorManagerprocess 相关API(具体API名称需参考最新文档,如 @ohos.process)注册全局的 uncaughtExceptionuncaughtException 事件监听器。
    • 在监听器的回调函数中,这是你捕获崩溃现场的关键时机。你需要在此处:
      • 立即使用 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);
          });
      });
      
  3. 配置事件上报

    • hiAppEvent 的配置中,开启事件上报功能,并设置你的 云日志服务地址。HarmonyOS Next的应用崩溃日志通常需要上报到你自己搭建或第三方(如华为AGC的AppGallery Connect崩溃服务)的日志分析平台,系统不会自动帮你收集到开发者后台
    • 确保应用有网络权限,以便能将捕获到的崩溃事件数据包发送到你的服务器。
  4. 用户端辅助信息

    • 对于难以复现的崩溃,可以考虑在应用内增加一个“问题反馈”入口,引导用户描述操作步骤,并允许用户手动触发上传最近的本地日志文件(如果hiAppEvent配置了本地缓存)。

总结:关键在于 主动监听全局异常,并在异常发生时,立即使用 hiAppEvent 将结构化的崩溃信息记录并上报 到你自己的日志分析系统。不能依赖用户设备上的系统日志输出。

回到顶部