uni-app 发行为鸿蒙APP时,模拟器安装后点击事件未触发
uni-app 发行为鸿蒙APP时,模拟器安装后点击事件未触发
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | windows11 | HBuilderX |
操作步骤:
- HBuilderX 发行 -> App - Harmony-本地打包。
- 找到打包产物中的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
使用 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社区或鸿蒙开发者论坛,看看是否有其他开发者遇到并解决了类似的问题。