【鸿蒙】ArkUI-X跨平台问题集锦
系列文章目录
【鸿蒙】ArkUI-X跨平台问题集锦
文章目录
- 系列文章目录
- 前言
- 问题集锦
- 1、HSP,HAR模块中 无法引入import bridge from '@arkui-x.bridge';
- 2、CustomDialog 自定义弹窗中的点击事件在Android 中无任何响应;
- 3、调用 buildRouterMode() 路由跳转页面前,必须手动import('/*page')页面。无法自动导入?
- 4、主题Android\iOS未适配沉浸式;
- 5、华为一键登录控件,不支持跨平台;
- 6、webview.registerJavaScriptProxy不支持跨平台,不支持创建H5桥接对象
- 7、平台差异化,代码如何只编译鸿蒙平台 或者Android、iOS平台,避免编译报错,不支持某平台问题;
- 8、关于DevEco Studio编译时报错问题解决,报错:“ xxx can't support crossplatform application. ”
- 9、在Android中无法使用JSON解析,报错: Load native module failed, so is @ohos:util.json
- 10、DevEco Studio中build App无异常,在Android端启动时闪退,提示找不到ability
- 11、在Android中,跳转页面,闪退报错 GetModuleBuffer failed.
- 12、配置gradle 使用JDK 17后,DevEco Studio 编译APP报错:jlink.exe 不存在
- 13、同步项目时,Ohpm Install 报错:Error: Invalid dependency
- 总结
前言
以下问题背景:从ArkUI纯鸿蒙项目——>改造为——>ArkUI-X项目。
问题集锦
1、HSP,HAR模块中 无法引入import bridge from ‘@arkui-x.bridge’;
报错:Cannot find module ‘@arkui-x.bridge’ or its corresponding type declarations. 找不到模块“@arkui-x.bridge”或其对应的类型声明<ArkTS检查>
原因:模块不支持跨平台,所以无法引入。
解决:
(推荐)方案一、
在项目.arkui-x/arkui-x-config.json5文件中,配置模块名称;
例如:
“modules”: [
“arkuix”, “utils”
]
(不推荐)方案二、在entry模块 引入bridge;
其他模块通过线程通讯emitter, 调用桥接 ;
2、CustomDialog 自定义弹窗中的点击事件在Android 中无任何响应;
解决:CustomDialogController 实例化时,不要设置showInSubWindow: true,默认值应为false,表示弹窗仅在应用内显示;
3、调用 buildRouterMode() 路由跳转页面前,必须手动import(‘/*page’)页面。无法自动导入?
解决:entry模块未配置模块动态导入;
参考文档:动态import变量表达式
4、主题Android\iOS未适配沉浸式;
5、华为一键登录控件,不支持跨平台;
解决:自定义华为登录按钮 调用登录API;
参考文档:使用自定义按钮登录
6、webview.registerJavaScriptProxy不支持跨平台,不支持创建H5桥接对象
解决方案:仅鸿蒙用此web,其他平台Android、iOS跳转至原生Web页面实现。
官方说明:当前该api内部已规划需求,请持续关注后续版本更新。
7、平台差异化,代码如何只编译鸿蒙平台 或者Android、iOS平台,避免编译报错,不支持某平台问题;
调整架构设计,参考文档:跨平台应用改造指南
8、关于DevEco Studio编译时报错问题解决,报错:“ xxx can’t support crossplatform application. ”
解决:修改静态编辑检查配置文件 C:\Program Files\Huawei\DevEco Studio\sdk\default\openharmony\ets\build-tools\ets-loader\lib\fast_build\system_api\api_check_utils.js
修改此配置为警告
“CROSSPLATFORM_TAG_CHECK_ERROER,!1,_typescript.default.DiagnosticCategory.Warning”
参考文档:关于DevEco Studio编译时报错问题解决
9、在Android中无法使用JSON解析,报错: Load native module failed, so is @ohos:util.json
[default] Throw error: Cannot read property parse of undefined
[default] at anonymous (arkuix|network|1.0.0|src/main/ets/Request.ts:86:1)
解决方案:
使用JSON,不用导包,导包反而报错,移除以下代码即可;
// import JSON from ‘@ohos.util.json’;
其他API加载失败请参考:异常Load native module failed, so is @ohos
10、DevEco Studio中build App无异常,在Android端启动时闪退,提示找不到ability
报错:ReferenceError: Cannot find module ‘com…/entry/ets/entryability/EntryAbility’ , which is application Entry Point
解决方案:
在项目根目录下build-profile.json5中,将以下代码注释掉;即可正常运行了
// “useNormalizedOHMUrl”: true
相关Issues:如何为纯HarmonyOS项目添加arkuix的支持
11、在Android中,跳转页面,闪退报错 GetModuleBuffer failed.
在Android Studio中报错如下:
E [js_module_reader.cpp(47)] GetModuleBuffer failed.A [default] [LoadJSPandaFile:101] resolveBufferCallback get hsp buffer failed, hsp path:/data/storage/el1/bundle/xxx/ets/modules.abc, errorMsg:modulePath:
并且项目‘.arkui-x/android/app/src/main/assets/arkui-x’文件夹下,未生成相应的HSP模块文件;
原因:
1、名为“xxx”的HSP模块,并非是[ArkUI-X]Shared Library类型的模块;这里由于在arkui项目改造为ArkUI-X项目过程中,HSP模块是之前IDE选择"Shared Library"模板创建的,因此不支持跨平台;
解决方案:
方案一:新建HSP模块时选择“[ArkUI-X]Shared Library”,在此基础上进行开发;
方案二:修改现有项目中的HSP模块,使其支持跨平台。具体步骤如下:
1、在‘.arkui-x/arkui-x-config.json5’文件中配置HSP模块名称;例如:{"crossplatform": true,"modules": ["entry","libraryHSP"// 此为HSP模块] }2、修改HSP模块中的‘hvigorfile.ts’文件,具体内容如下图所示,左侧为普通HSP配置,右侧为跨平台HSP配置;
跨平台HSP配置:import { HspTasks } from '@ohos/hvigor-ohos-arkui-x-plugin';export default {system: HspTasks, /* Built-in plugin of Hvigor. It cannot be modified. */plugins:[] /* Custom plugin to extend the functionality of Hvigor. */ }
12、配置gradle 使用JDK 17后,DevEco Studio 编译APP报错:jlink.exe 不存在
报错信息:
* What went wrong:
Execution failed for task ':app:compileGuanwangReleaseJavaWithJavac'.
> Could not resolve all files for configuration ':app:androidJdkImage'.> Failed to transform core-for-system-modules.jar to match attributes {artifactType=_internal_android_jdk_image, org.gradle.libraryelements=jar, org.gradle.usage=java-runtime}.> Execution failed for JdkImageTransform: D:\Android\Sdk\platforms\android-34\core-for-system-modules.jar.> jlink executable C:\Program Files\Huawei\DevEco Studio\jbr\bin\jlink.exe does not exist.
原因:
jlink 是 JDK 的模块化工具(来自 JDK 17+);
而华为 DevEco Studio 的 JBR 是定制化 Java 运行时,可能不包含完整 JDK 工具链;
解决方案
(1)强制指定标准 JDK 路径
在项目的 gradle.properties 中添加:# 指向 Android Studio 的 JDK 或独立安装的 JDK 17+ org.gradle.java.home=C\:\\Program Files\\Android\\Android Studio\\jbr # 或 org.gradle.java.home=C\:\\Program Files\\Java\\jdk-17.0.8(2)最后在DevEco Studio中,清理构建缓存,重新编译APP即可。
13、同步项目时,Ohpm Install 报错:Error: Invalid dependency
报错信息:
ohpm ERROR: Invalid dependency uicomponents@D:\DevEcoStudioProjects\arkui-x\commons\uicomponents -> uicomponents@1.0.0
ohpm ERROR: Found exception: Error: Invalid dependency, reached retry limit or non retryable error encountered.
ohpm ERROR: Invalid dependency utils@D:\DevEcoStudioProjects\arkui-x\commons\utils -> utils@1.0.0
ohpm ERROR: Found exception: Error: Invalid dependency, reached retry limit or non retryable error encountered.
ohpm ERROR: Invalid dependency network@D:\DevEcoStudioProjects\arkui-x\commons\network -> network@1.0.0
ohpm ERROR: Found exception: Error: Invalid dependency, reached retry limit or non retryable error encountered.
ohpm ERROR: Install failed, detail: Error: Invalid dependency
原因:
模块间出现了循环依赖;
解决方案:排查模块的依赖关系,避免出现循环依赖,在模块下的oh-package.json5 中移除冲突的依赖项;例如上述日志中提到,需要排查的“uicomponents”和“utils”模块。
总结
以上就是鸿蒙跨平台 开发过程中 遇到的问题,后期会不定时补充,欢迎大家留言交流。
相关文章:
【鸿蒙】ArkUI-X跨平台问题集锦
系列文章目录 【鸿蒙】ArkUI-X跨平台问题集锦 文章目录 系列文章目录前言问题集锦1、HSP,HAR模块中 无法引入import bridge from arkui-x.bridge;2、CustomDialog 自定义弹窗中的点击事件在Android 中无任何响应;3、调用 buildRouterMode() 路由跳转页面前…...
大模型驱动的业务自动化
大模型输出token的速度太低且为统计输出,所以目前大模型主要应用在toP(人)的相关领域;但其智能方面的优势又是如此的强大,自然就需要尝试如何将其应用到更加广泛的toM(物理系统、生产系统)领域中…...
ocr智能票据识别系统|自动化票据识别集成方案
在企业日常运营中,对大量票据实现数字化管理是一项耗时且容易出错的任务。随着技术的进步,OCR(光学字符识别)智能票据识别系统的出现为企业提供了一个高效、准确的解决方案,不仅简化了财务流程,还大幅提升了…...
[数据结构]红黑树,详细图解插入
目录 一、红黑树的概念 二、红黑树的性质 三、红黑树节点的定义 四、红黑树的插入(步骤) 1.为什么新插入的节点必须给红色? 2、插入红色节点后,判定红黑树性质是否被破坏 五、插入出现连续红节点情况分析图解(看…...
【机器学习】超参数调优指南:交叉验证,网格搜索,混淆矩阵——基于鸢尾花与数字识别案例的深度解析
一、前言:为何要学交叉验证与网格搜索? 大家好!在机器学习的道路上,我们经常面临一个难题:模型调参。比如在 KNN 算法中,选择多少个邻居(n_neighbors)直接影响预测效果。 • 蛮力猜…...
Burp Suite基本使用(web安全)
工具介绍 在网络安全的领域,你是否听说过抓包,挖掘漏洞等一系列的词汇,这篇文章将带你了解漏洞挖掘的热门工具——Burp Suite的使用。 Burp Suite是一款由PortSwigger Web Security公司开发的集成化Web应用安全检测工具,它主要用于…...
React实现自定义图表(线状+柱状)
要使用 React 绘制一个结合线状图和柱状图的图表,你可以使用 react-chartjs-2 库,它是基于 Chart.js 的 React 封装。以下是一个示例代码,展示如何实现这个需求: 1. 安装依赖 首先,你需要安装 react-chartjs-2 和 ch…...
从低清到4K的魔法:FlashVideo突破高分辨率视频生成计算瓶颈(港大港中文字节)
论文链接:https://arxiv.org/pdf/2502.05179 项目链接:https://github.com/FoundationVision/FlashVideo 亮点直击 提出了 FlashVideo,一种将视频生成解耦为两个目标的方法:提示匹配度和视觉质量。通过在两个阶段分别调整模型规模…...
Qt的QTabWidget的使用
在PyQt5中,QTabWidget 是一个用于管理多个选项卡页面的容器控件。以下是其使用方法的详细说明和示例: 1. 基本用法 import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QTabWidget, QWidget, QLabel, QVBoxLayoutclass MainWindow(QMa…...
Next.js【详解】获取数据(访问接口)
Next.js 中分为 服务端组件 和 客户端组件,内置的获取数据各不相同 服务端组件 方式1 – 使用 fetch export default async function Page() {const data await fetch(https://api.vercel.app/blog)const posts await data.json()return (<ul>{posts.map((…...
反向代理模块kd
1 概念 1.1 反向代理概念 反向代理是指以代理服务器来接收客户端的请求,然后将请求转发给内部网络上的服务器,将从服务器上得到的结果返回给客户端,此时代理服务器对外表现为一个反向代理服务器。 对于客户端来说,反向代理就相当于…...
leaflet前端初始化项目
1、通过npm安装leaflet包,或者直接在项目中引入leaflet.js库文件。 npm 安装:npm i leaflet 如果在index.html中引入leaflet.js,在项目中可以直接使用变量L. 注意:尽量要么使用npm包,要么使用leaflet.js库,两者一起使用容易发生…...
CMS DTcms 靶场(弱口令、文件上传、tasklist提权、开启远程桌面3389、gotohttp远程登录控制)
环境说明 攻击机kali:192.168.111.128 信息收集 主机发现 ┌──(root㉿kali-plus)-[~/Desktop] └─# nmap -sP 192.168.111.0/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-23 14:57 CST Nmap scan report for 192.168.111.1 Host is up (0.00039s latenc…...
Docker 入门与实战:从安装到容器管理的完整指南
🚀 Docker 入门与实战:从安装到容器管理的完整指南 🌟 📖 简介 在现代软件开发中,容器化技术已经成为不可或缺的一部分。而 Docker 作为容器化领域的领头羊,以其轻量级、高效和跨平台的特性,深…...
git删除本地分支
一、命令方式 1、查看本地分支 git branch 2、切换到一个不删除的分支 git checkout branch_name 3、强制删除分支 git branch -D local_branch_name 二、工具方式 1、选择"Browse references",右键"Delete branch"...
spring cloud gateway限流常见算法
目录 一、网关限流 1、限流的作用 1. 保护后端服务 2. 保证服务质量 (QoS) 3. 避免滥用和恶意攻击 4. 减少资源浪费 5. 提高系统可扩展性和稳定性 6. 控制不同用户的访问频率 7. 提升用户体验 8. 避免API滥用和负载过高 9. 监控与分析 10. 避免系统崩溃 2、网关限…...
本地使用docker部署DeepSeek大模型
1、相关技术介绍 1.1、RAG RAG(Retrieval Augmented Generation),即“检索,增强,生成”,用于提升自然语言处理任务的性能。其核心思想是通过检索相关信息来增强生成模型的能力,具体步骤如下&am…...
C++ 设计模式-外观模式
外观模式的定义 外观模式是一种 结构型设计模式,它通过提供一个简化的接口来隐藏系统的复杂性。外观模式的核心思想是: 封装复杂子系统:将多个复杂的子系统或组件封装在一个统一的接口后面。提供简单接口:为客户端提供一个更简单、更易用的接口,而不需要客户端直接与复杂…...
【Linux网络编程】应用层协议HTTP(请求方法,状态码,重定向,cookie,session)
🎁个人主页:我们的五年 🔍系列专栏:Linux网络编程 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 Linux网络编程笔记: https://blog.cs…...
SQL进阶技巧:如何统计用户跨端消费行为?
目录 0 问题描述 2 问题剖析 技术难点解析 3 完整解决方案 步骤1:构造全量日期平台组合 步骤2:用户行为标记 步骤3:最终关联聚合 4 核心技巧总结 5 复杂度评估 往期精彩 0 问题描述 支出表: Spending +-------------+---------+ | Column Name | Type | +-----…...
Twake Drive开发环境搭建:从零开始的完整教程
Twake Drive开发环境搭建:从零开始的完整教程 【免费下载链接】twake-drive-legacy LEGACY: The open-source alternative to Google Drive. 项目地址: https://gitcode.com/gh_mirrors/tw/twake-drive-legacy Twake Drive是一款开源的Google Drive替代方案…...
告别单调列表!Bootstrap-Vue列表组件BListGroup的10个高级玩法
告别单调列表!Bootstrap-Vue列表组件BListGroup的10个高级玩法 【免费下载链接】bootstrap-vue MOVED to https://github.com/bootstrap-vue-next/bootstrap-vue-next 项目地址: https://gitcode.com/gh_mirrors/bo/bootstrap-vue Bootstrap-Vue的BListGroup…...
告别系统依赖:用C++和FreeType库手把手打造你的跨平台字体渲染引擎
从零构建跨平台字体渲染引擎:C与FreeType实战指南 在当今数字内容爆炸式增长的时代,文字渲染作为人机交互的基础组件,其重要性不言而喻。无论是游戏开发、嵌入式系统还是专业设计软件,高质量的字体渲染能力都是提升用户体验的关键…...
嵌入式Web服务器事先,控制开发板硬件(流程概述)
嵌入式 Web 控制硬件:Boa CGI JSON-RPC 完整实现 一、系统架构 开发板(i.MX6ULL)运行: Boa Web 服务器:提供静态页面和 CGI 支持。 RPC 服务端(常驻后台):基于 JSON‑RPC 接收调…...
Sage智能体平台:从LLM到生产级自动化工作流的工程实践
1. 项目概述:从复杂任务到可靠交付的智能体平台如果你和我一样,在过去几年里深度参与过AI应用开发,特别是基于大语言模型(LLM)的智能体(Agent)项目,那你一定体会过那种“理想很丰满&…...
FlashAttention技术解析:优化Transformer注意力计算效率
1. FlashAttention 技术解析:从 IO 优化到架构演进在深度学习领域,注意力机制已成为Transformer架构的核心组件。然而,随着序列长度的增加,标准注意力计算面临着严重的IO瓶颈问题。FlashAttention系列技术通过创新的内存访问优化&…...
FPGA在高性能计算中的优势与应用实践
1. FPGA在高性能计算中的独特价值作为一名长期从事FPGA开发的工程师,我见证了FPGA从简单的胶合逻辑到高性能计算核心的蜕变。FPGA(现场可编程门阵列)本质上是一块空白的数字画布,开发者可以通过硬件描述语言在上面"绘制"…...
Tidyverse 2.0报告流水线重构实战:从手动导出到全自动PDF/HTML/Slidy一键发布(含CI/CD集成模板)
更多请点击: https://intelliparadigm.com 第一章:Tidyverse 2.0报告自动化体系全景概览 Tidyverse 2.0 并非一次简单版本迭代,而是围绕“可重复性、可审计性与可部署性”三大支柱重构的报告自动化生态体系。其核心变化在于将 dplyr、ggplo…...
英雄联盟国服免费换肤终极教程:R3nzSkin完整使用指南
英雄联盟国服免费换肤终极教程:R3nzSkin完整使用指南 【免费下载链接】R3nzSkin-For-China-Server Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3/R3nzSkin-For-China-Server 厌倦了英雄联盟国服中单调的默认皮肤&…...
别再手动转PDF了!手把手教你用SpringBoot + Jodconverter搭建一个文档自动转换服务
别再手动转PDF了!SpringBoot Jodconverter打造企业级文档自动化服务 每天早晨9点,市场部的李经理都会收到十几份来自全国各地的销售合同。这些Word文档需要统一转换为PDF格式归档,手动操作不仅耗时,还经常因为格式错乱需要返工。…...

