目录

应用切换深色模式时发生闪退

问题现象

切换为深色模式时,应用发生闪退。

背景知识

问题定位

  1. 确认闪退类型,闪退问题首先排查是否出现JsCrash或者CppCrash,查看faultlogger目录,是否生成了形如jscrash-应用包名或者cppcrash-应用包名的故障日志。
  2. 确认闪退原因。
    Error name:Error
    Error message:@Component 'BottomBarView'[41]: ForEach id 104: use of default id generator function not possible on provided data structure. Need to specify id generator function (ForEach 3rd parameter). Application Error!
    Stacktrace:
    at idGenFunc (/usr1/hmos_for_system/src/increment/sourcecode/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/stateMgmt.js:4341:1)
    at anonymous (/usr1/hmos_for_system/src/increment/sourcecode/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/stateMgmt.js:4353:1)
    at forEachUpdateFunction (/usr1/hmos_for_system/src/increment/sourcecode/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/stateMgmt.js:4352:1)
    at anonymous (features/home/src/main/ets/bottombar/BottomBarView.ets:41:40)
    at updateFunc (/usr1/hmos_for_system/src/increment/sourcecode/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/stateMgmt

    从故障日志中可以获取到故障原因和异常信息。

    • 故障原因是Error。
    • 异常信息是@Component XXX:ForEach id XXX: use of default id generator function not possible on provided data structure. Need to specify id generator function (ForEach 3rd parameter). Application Error!
      Error name:Error
      Error message:@Component XXXX: ForEach id 104: use of default id generator function not possible on provided data structure. Need to specify id generator function (ForEach 3rd parameter). Application Error!
      Stacktrace:
      at idGenFunc (/usr1/hmos_for_system/src/increment/sourcecode/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/stateMgmt.js:4341:1)
      at anonymous (/usr1/hmos_for_system/src/increment/sourcecode/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/stateMgmt.js:4353:1)
    • 从异常信息可以看出默认的键值生成函数不能处理提供的数据结构,需要自定义键值生成函数。

分析结论

提供的数据结构不能被默认的键值生成函数处理。

修改建议

确保提供的数据结构能被默认的键值生成函数处理或者自定义键值生成函数,参考文档使用场景。