uni-app 发行为鸿蒙APP时,模拟器安装后点击事件未触发

发布于 1周前 作者 yibo5220 来自 Uni-App

uni-app 发行为鸿蒙APP时,模拟器安装后点击事件未触发

开发环境 版本号 项目创建方式
Windows windows11 HBuilderX

操作步骤:

  1. HBuilderX 发行 -> App - Harmony-本地打包。
  2. 找到打包产物中的entry -> build -> release -> outputs -> default -> app -> xxx.hap,拖拽到鸿蒙模拟器安装。

或者直接再DevEco 中运行到鸿蒙模拟器。

预期结果:

所有点击事件正常响应

实际结果:

所有点击事件未正常响应

bug描述:

所有绑定的点击事件都没有生效。 HBuilderX 运行到鸿蒙模拟器没有问题。 HBuilderX 本地打包为鸿蒙,然后安装生成的.hap 文件,或是DevEco 运行到模拟器,点击事件就不生效了。 不管是view标签上绑定的click事件还是自定义组件上绑定的click事件皆是如此。

点击的时候DevEco 报如下的错误,不知是否有关联。

[nweb_handler_delegate.cc:3426] native proxy object not found, name:harmonyChannel
`

更多关于uni-app 发行为鸿蒙APP时,模拟器安装后点击事件未触发的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

使用 hx 运行到手机或模拟器上的呢?调试的时候正常不?

更多关于uni-app 发行为鸿蒙APP时,模拟器安装后点击事件未触发的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


目前只有模拟器,允许到模拟器是正常的,通过DevEco 手动打包一个.hap 也是正常的,最后的app 审核报“点击任意控件均无响应”

打包产物中的hap文件:default目录下的安装后可以点击,release目录下的安装后不能点击。 难道是我的配置文件有问题?build-profile.json5 内容如下
{
“app”: {
“signingConfigs”: [
{
“name”: “default”,
“type”: “HarmonyOS”,
“material”: {
“storePassword”: “xxx”,
“certpath”: “xxx”,
“keyAlias”: “xxx”,
“keyPassword”: “xxx”,
“profile”: “xxx”,
“signAlg”: “xxx”,
“storeFile”: “xxx”
}
},
{
“name”: “release”,
“type”: “HarmonyOS”,
“material”: {
“storePassword”: “xxx”,
“certpath”: “xxx”,
“keyAlias”: “xxx”,
“keyPassword”: “xxx”,
“profile”: “xxx”,
“signAlg”: “xxx”,
“storeFile”: “xxx”
}
}
],
“products”: [
{
“name”: “default”,
“signingConfig”: “default”,
“compatibleSdkVersion”: “4.0.0(10)”,
“runtimeOS”: “HarmonyOS”,
},
{
“name”: “release”,
“signingConfig”: “release”,
“compatibleSdkVersion”: “4.0.0(10)”,
“runtimeOS”: “HarmonyOS”,
}
],
“buildModeSet”: [
{
“name”: “debug”,
},
{
“name”: “release”
}
]
},
“modules”: [
{
“name”: “entry”,
“srcPath”: “./entry”,
“targets”: [
{
“name”: “default”,
“applyToProducts”: [
“default”,
“release”
]
}
]
}
]
}


试了一下,手动这样改一下,开调试模式通过发行打包出来的.hap文件安装之后可以正常点击,当然这样肯定上架不了就是了。 不开打出来的就点不了 “buildModeSet”: [
{
“name”: “debug”
},
{
“name”: “release”,
“buildOption”: {
“debuggable”: true
}
}
]

在将uni-app应用发布为鸿蒙APP时,如果在模拟器中点击事件未触发,通常可能是由于事件绑定不正确、组件属性设置不当或模拟器兼容性问题引起的。以下是一些可能帮助你解决问题的代码示例和检查点,确保你的事件绑定和组件使用是正确的。

1. 检查事件绑定

确保你的点击事件已正确绑定。以下是一个简单的示例,展示如何在uni-app中绑定一个按钮点击事件:

<template>
  <view>
    <button @click="handleClick">点击我</button>
  </view>
</template>

<script>
export default {
  methods: {
    handleClick() {
      console.log('按钮被点击');
      uni.showToast({
        title: '按钮点击事件触发',
        icon: 'success'
      });
    }
  }
}
</script>

2. 检查组件属性

确保你使用的组件属性在鸿蒙系统中是支持的。有时候,某些属性或方法在特定平台上可能不被支持或表现不一致。

3. 模拟器兼容性

由于鸿蒙模拟器可能还在不断优化和完善中,可能存在一些兼容性问题。确保你使用的是最新版本的鸿蒙开发工具和模拟器。此外,尝试在不同的设备和模拟器上测试你的应用,以排除特定设备或模拟器的问题。

4. 使用uni-app官方示例

参考uni-app官方文档和示例项目,确保你的代码符合最佳实践。官方示例通常已经过测试,能在多种平台上正常运行。

5. 日志和调试

使用uni-app提供的调试工具查看控制台输出,检查是否有任何错误或警告信息。这可以帮助你定位问题所在。

// 在方法中加入console.log来调试
handleClick() {
  console.log('尝试触发点击事件');
  try {
    // 你的逻辑代码
    uni.showToast({
      title: '按钮点击事件触发',
      icon: 'success'
    });
  } catch (error) {
    console.error('点击事件触发失败:', error);
  }
}

6. 更新uni-app和依赖

确保你的uni-app框架和所有相关依赖都是最新版本的,因为新版本可能修复了旧版本中的一些已知问题。

通过上述步骤,你应该能够定位并解决点击事件在鸿蒙模拟器上未触发的问题。如果问题依然存在,建议查看uni-app社区或鸿蒙开发者论坛,看看是否有其他开发者遇到并解决了类似的问题。

回到顶部