YnnSon
YnnSon
  • 发布:2026-08-25 11:12
  • 更新:2026-08-26 17:59
  • 阅读:204

【报Bug】unipush2.0 + 鸿蒙,编译打包后闪退,具体情况看描述和附件

分类:鸿蒙Next

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Win11 25H2

HBuilderX类型: 正式

HBuilderX版本号: 5.24

手机系统: HarmonyOS NEXT

手机系统版本号: HarmonyOS 6.0.0

手机厂商: 华为

手机机型: nova 16

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
Error message:Cannot read property action of undefined  
Stacktrace:  
    at anonymous @uni_modules/uni-push (uni_modules/uni-push/utssdk/app-harmony/index.ets:348:14)  
    at emit @dcloudio/uni-mp-sdk (oh_modules/.ohpm/@dcloudio+uni-app-runtime@jakfngz7cm+tr6zb9bbjju2z+jqkuucunurglspq+fa=/oh_modules/@dcloudio/uni-app-runtime/src/main/ets/uni-mp-sdk/sdk.js:61:24)  
    at onCreate @dcloudio/uni-mp-sdk (oh_modules/.ohpm/@dcloudio+uni-app-runtime@jakfngz7cm+tr6zb9bbjju2z+jqkuucunurglspq+fa=/oh_modules/@dcloudio/uni-app-runtime/src/main/ets/uni-mp-sdk/EntryAbility.ets:41:23)

操作步骤:

看描述

预期结果:

看描述

实际结果:

看描述

bug描述:

正在调试鸿蒙NEXT的unipush2.0离线推送,按照文档完成了各种配置,开启了鸿蒙版的unipush,运行到手机(nova 19, 6.1.0)和模拟器,debug模式和release模式、HBuilderX运行和DevEco运行都尝试了,都会闪退,闪退日志详情看附件,下面是其中一部分

Error message:Cannot read property action of undefined  
Stacktrace:  
    at anonymous @uni_modules/uni-push (uni_modules/uni-push/utssdk/app-harmony/index.ets:348:14)  
    at emit @dcloudio/uni-mp-sdk (oh_modules/.ohpm/@dcloudio+uni-app-runtime@jakfngz7cm+tr6zb9bbjju2z+jqkuucunurglspq+fa=/oh_modules/@dcloudio/uni-app-runtime/src/main/ets/uni-mp-sdk/sdk.js:61:24)  
    at onCreate @dcloudio/uni-mp-sdk (oh_modules/.ohpm/@dcloudio+uni-app-runtime@jakfngz7cm+tr6zb9bbjju2z+jqkuucunurglspq+fa=/oh_modules/@dcloudio/uni-app-runtime/src/main/ets/uni-mp-sdk/EntryAbility.ets:41:23)

我尝试取消勾选unipush,重新打包正常打开,但会报uni.onPushMessage is not a function
结合AI最终得出结论(官方判断下,我也不知道是不是这个问题),uni-push的sdk存在BUG

我也不知道是否就我有这个问题,论坛和网上均没搜索到相关
uniapp官方关于鸿蒙和推送的相关文档均查看并确认了配置,甚至个推的文档和华为的文档都看了,确认几个证书文件和相关配置是没有问题的

2026-08-25 11:12 负责人:无 分享
已邀请:
百搜全端云

百搜全端云 - 百搜开发团队

uni‑push2.0 鸿蒙 Next 闪退
报错:Cannot read property action of undefined
堆栈:uni‑push/utssdk/app‑harmony/index.ets:348:14
问题根源
鸿蒙冷启动场景,onCreate生命周期推送插件收到 event = undefined,源码直接访问event.action,没有做空判断直接取值,直接 APP 闪退。
不是证书、签名、工程配置问题,属于 uni‑push 鸿蒙 UTS 插件内部代码 bug。
现象特征
关闭 uni‑push 插件 → App 正常启动;开启插件冷启动直接闪退。
Debug/Release、HBuilderX 基座 / DevEco 打包均复现。
热打开 App 不一定复现,冷启动(杀掉后台重开)必概率闪退。
日志确认 runtime 传给插件onCreate的 event 参数为undefined。
临时规避方案(改插件源码)
修改 uni_modules/uni‑push/utssdk/app‑harmony/index.ets,定位 348 行附近
原代码(直接读取 event.action)
ts
emit(SDK.js, 'onCreate', event.action, event);
增加空保护,先判断 event 是否存在
ts
if(!event) return; //增加做空拦截
emit(SDK.js, 'onCreate', event.action, event);
修改完重新制作自定义基座验证,冷启动不会再闪退。
其他检查点
uni‑push 鸿蒙版本:更新到插件市场最新版;如果官方还未修复,只能手动打补丁。
不要在entryability手动修改推送相关初始化,保持 uni‑push 接管。
该 bug 只发生在鸿蒙 Next;Android/iOS 不受影响。
提交 bug 关键描述
uni‑push2.0 鸿蒙插件 onCreate 回调冷启动收到 event 为 undefined,直接访问 event.action 无空判断,造成应用闪退;手动增加 if (!event) return 可规避。证书签名配置全部正确。
等待 DCloud 官方插件更新修复该代码缺陷。
极简总结
鸿蒙冷启动传入event=undefined,插件代码没做空校验,读取event.action直接崩溃;手动给 ets 源码增加if(!event) return临时修复。

要回复问题请先登录注册