当前位置: 首页 > news >正文

【鸿蒙】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 中无任何响应&#xff1b;3、调用 buildRouterMode() 路由跳转页面前&#xf…...

大模型驱动的业务自动化

大模型输出token的速度太低且为统计输出&#xff0c;所以目前大模型主要应用在toP&#xff08;人&#xff09;的相关领域&#xff1b;但其智能方面的优势又是如此的强大&#xff0c;自然就需要尝试如何将其应用到更加广泛的toM&#xff08;物理系统、生产系统&#xff09;领域中…...

ocr智能票据识别系统|自动化票据识别集成方案

在企业日常运营中&#xff0c;对大量票据实现数字化管理是一项耗时且容易出错的任务。随着技术的进步&#xff0c;OCR&#xff08;光学字符识别&#xff09;智能票据识别系统的出现为企业提供了一个高效、准确的解决方案&#xff0c;不仅简化了财务流程&#xff0c;还大幅提升了…...

[数据结构]红黑树,详细图解插入

目录 一、红黑树的概念 二、红黑树的性质 三、红黑树节点的定义 四、红黑树的插入&#xff08;步骤&#xff09; 1.为什么新插入的节点必须给红色&#xff1f; 2、插入红色节点后&#xff0c;判定红黑树性质是否被破坏 五、插入出现连续红节点情况分析图解&#xff08;看…...

【机器学习】超参数调优指南:交叉验证,网格搜索,混淆矩阵——基于鸢尾花与数字识别案例的深度解析

一、前言&#xff1a;为何要学交叉验证与网格搜索&#xff1f; 大家好&#xff01;在机器学习的道路上&#xff0c;我们经常面临一个难题&#xff1a;模型调参。比如在 KNN 算法中&#xff0c;选择多少个邻居&#xff08;n_neighbors&#xff09;直接影响预测效果。 • 蛮力猜…...

Burp Suite基本使用(web安全)

工具介绍 在网络安全的领域&#xff0c;你是否听说过抓包&#xff0c;挖掘漏洞等一系列的词汇&#xff0c;这篇文章将带你了解漏洞挖掘的热门工具——Burp Suite的使用。 Burp Suite是一款由PortSwigger Web Security公司开发的集成化Web应用安全检测工具&#xff0c;它主要用于…...

React实现自定义图表(线状+柱状)

要使用 React 绘制一个结合线状图和柱状图的图表&#xff0c;你可以使用 react-chartjs-2 库&#xff0c;它是基于 Chart.js 的 React 封装。以下是一个示例代码&#xff0c;展示如何实现这个需求&#xff1a; 1. 安装依赖 首先&#xff0c;你需要安装 react-chartjs-2 和 ch…...

从低清到4K的魔法:FlashVideo突破高分辨率视频生成计算瓶颈(港大港中文字节)

论文链接&#xff1a;https://arxiv.org/pdf/2502.05179 项目链接&#xff1a;https://github.com/FoundationVision/FlashVideo 亮点直击 提出了 FlashVideo&#xff0c;一种将视频生成解耦为两个目标的方法&#xff1a;提示匹配度和视觉质量。通过在两个阶段分别调整模型规模…...

Qt的QTabWidget的使用

在PyQt5中&#xff0c;QTabWidget 是一个用于管理多个选项卡页面的容器控件。以下是其使用方法的详细说明和示例&#xff1a; 1. 基本用法 import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QTabWidget, QWidget, QLabel, QVBoxLayoutclass MainWindow(QMa…...

Next.js【详解】获取数据(访问接口)

Next.js 中分为 服务端组件 和 客户端组件&#xff0c;内置的获取数据各不相同 服务端组件 方式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 反向代理概念 反向代理是指以代理服务器来接收客户端的请求&#xff0c;然后将请求转发给内部网络上的服务器&#xff0c;将从服务器上得到的结果返回给客户端&#xff0c;此时代理服务器对外表现为一个反向代理服务器。 对于客户端来说&#xff0c;反向代理就相当于…...

leaflet前端初始化项目

1、通过npm安装leaflet包&#xff0c;或者直接在项目中引入leaflet.js库文件。 npm 安装&#xff1a;npm i leaflet 如果在index.html中引入leaflet.js,在项目中可以直接使用变量L. 注意:尽量要么使用npm包&#xff0c;要么使用leaflet.js库&#xff0c;两者一起使用容易发生…...

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 入门与实战:从安装到容器管理的完整指南

&#x1f680; Docker 入门与实战&#xff1a;从安装到容器管理的完整指南 &#x1f31f; &#x1f4d6; 简介 在现代软件开发中&#xff0c;容器化技术已经成为不可或缺的一部分。而 Docker 作为容器化领域的领头羊&#xff0c;以其轻量级、高效和跨平台的特性&#xff0c;深…...

git删除本地分支

一、命令方式 1、查看本地分支 git branch 2、切换到一个不删除的分支 git checkout branch_name 3、强制删除分支 git branch -D local_branch_name 二、工具方式 1、选择"Browse references"&#xff0c;右键"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&#xff08;Retrieval Augmented Generation&#xff09;&#xff0c;即“检索&#xff0c;增强&#xff0c;生成”&#xff0c;用于提升自然语言处理任务的性能。其核心思想是通过检索相关信息来增强生成模型的能力&#xff0c;具体步骤如下&am…...

C++ 设计模式-外观模式

外观模式的定义 外观模式是一种 结构型设计模式,它通过提供一个简化的接口来隐藏系统的复杂性。外观模式的核心思想是: 封装复杂子系统:将多个复杂的子系统或组件封装在一个统一的接口后面。提供简单接口:为客户端提供一个更简单、更易用的接口,而不需要客户端直接与复杂…...

【Linux网络编程】应用层协议HTTP(请求方法,状态码,重定向,cookie,session)

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;Linux网络编程 &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 ​ Linux网络编程笔记&#xff1a; https://blog.cs…...

SQL进阶技巧:如何统计用户跨端消费行为?

目录 0 问题描述 2 问题剖析 技术难点解析 3 完整解决方案 步骤1:构造全量日期平台组合 步骤2:用户行为标记 步骤3:最终关联聚合 4 核心技巧总结 5 复杂度评估 往期精彩 0 问题描述 支出表: Spending +-------------+---------+ | Column Name | Type | +-----…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...