无足鸟ICT
无足鸟ICT
  • 发布:2026-10-29 21:52
  • 更新:2026-10-29 21:52
  • 阅读:55

【报Bug】App-Harmony 5.33 蒸汽模式:自定义组件事件处理器已定义时原生崩溃(x86_64 模拟器复现)

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 华为 DevEco Studio 模拟器 x86_64;HarmonyOS 7.0.0(26) 与 HarmonyOS 6.1.1(24);Windows 11

HBuilderX类型: 正式

HBuilderX版本号: 5.33

手机系统: Android

手机系统版本号: HarmonyOS 6.0.0

手机厂商: 模拟器

手机机型: Pura90

页面类型: vue

vue版本: vue3

打包方式: 离线

项目创建方式: HBuilderX

示例代码:

以 index.uvue 模板绑定为例(SelectionPopover 自定义组件,8 个事件中 shareImage 为其一):

  1. 状态A(能跑,控制台报错):
    <SelectionPopover ... @share-image="onCardShareImage" />
    // script:onCardShareImage 仅在 #ifdef MP-WEIXIN 内定义

  2. 状态B(崩溃):将定义移出条件编译(全平台定义,真函数/空函数/null 均崩):
    const cardShareImage = ref('')
    function onCardShareImage(path : string) : void {
    cardShareImage.value = path
    }

  3. 状态C(崩溃):模板侧包裹 <!-- #ifdef MP-WEIXIN --> @share-image="onCardShareImage" <!-- #endif -->,
    编译产物(www/assets/pages/index/index.js)已确认不含 onShareImage 槽位,仍崩。

操作步骤:
  1. uni-app x 项目运行到鸿蒙模拟器(x86_64)。
  2. 状态A → 正常运行。
  3. 状态B(处理器全平台定义)→ 冷启动即 SIGABRT 退出。
  4. 状态C(模板条件编译剔除绑定)→ 同样 SIGABRT。
  5. 每步均在 bm uninstall 卸载 + 删除 unpackage/dist/dev/app-harmony 全量重编的干净环境验证;并已排除:应用数据(bm clean -d)、设备侧编译缓存、宿主 hvigor 缓存、热更新路径、模拟器镜像版本(7.0.0(26)/6.1.1(24) 双镜像复现,基线双镜像均稳定)、构建入口(HBuilderX 内置管线与 cli launch app-harmony 均复现)。

预期结果:

三种状态下 App 均正常运行(事件未监听时静默忽略,不应原生崩溃)。

实际结果:

状态B/C 原生 SIGABRT 崩溃(TemplateRenderNativeViewHelperHostAdapter received an unsupported component sharedData source),App 启动即退出;仅状态A可运行(控制台报 onCardShareImage is not defined)。

bug描述:

【环境信息】

  • HBuilderX 5.33(alpha,编译器 5.33(uni-app x)蒸汽模式,视图层编译目标:字节码)
  • Windows 11;华为 DevEco 模拟器 x86_64(HarmonyOS 7.0.0(26) 与 6.1.1(24) 双镜像均复现;模拟器 runtime 26.0.0.851)
  • 项目:uni-app x(uvue + UTS,Vue3 setup)

【Bug 描述】
页面模板对自定义组件(defineEmits 声明 8 个事件)绑定 @share-image="onCardShareImage",处理器在源码中位于 #ifdef MP-WEIXIN 块内,App-Harmony 端未定义。实测三态:

  1. 状态A(未定义):正常运行,仅控制台报 "onCardShareImage is not defined"(指向模板绑定行)。
  2. 状态B(处理器已定义,任意形态:真实实现/空函数/null 占位):冷启动进入前台约 400ms 内原生崩溃。
  3. 状态C(模板 <!-- #ifdef MP-WEIXIN --> 包裹该属性行,编译产物已确认鸿蒙端无此绑定):仍崩溃。

崩溃签名(三态一致,faultlogger cppcrash 日志):
Reason: Signal:SIGABRT(SI_TKILL)
LastFatalMessage: terminating due to uncaught exception of type std::runtime_error: TemplateRenderNativeViewHelperHostAdapter received an unsupported component sharedData source.
栈位于 libsdk.so,经 ArkNativeFunctionCallBack 触发。

【备注】

  • 同组件其他 7 个已定义事件处理器(onSync/onDismiss/onToast/onSpanChanged/onDragStarted/onQueryAnchors 等)均正常,仅 share-image 处理触发崩溃。
  • 阅读页对同组件采用“处理器全平台定义”模式,打开阅读页预期同样崩溃。
  • 可提供 cppcrash 完整日志。
2026-10-29 21:52 负责人:无 分享
已邀请:

要回复问题请先登录或注册