【鸿蒙】ArkUI-X跨平台问题集锦

系列文章目录

【鸿蒙】ArkUI-X跨平台问题集锦



前言

以下问题背景:从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”模块。


总结

以上就是鸿蒙跨平台 开发过程中 遇到的问题,后期会不定时补充,欢迎大家留言交流。

<think>好的,我现在要处理用户关于ArkUI-X的技术信息或文档的查询。首先,我需要确认ArkUI-X是什么,以及它的相关资源在哪里可以找到。根据之前的对话历史,用户之前可能没有提到过ArkUI-X,所以需要从头开始查找相关信息。 首先,我回忆一下ArkUI-X可能的背景。ArkUI是华为推出的一个UI框架,用于跨设备应用开发,可能属于HarmonyOS生态系统的一部分。ArkUI-X可能是其扩展版本,支持更多的平台或功能。但我不确定,需要进一步验证。 接下来,我需要检查现有的引用内容是否有关联。用户提供的引用[1]提到技术专家的态度,引用[2]关于Elasticsearch证书的拷贝,引用[3]讨论条件表达式中的赋值问题,这些似乎都与ArkUI-X无关。因此,可能需要依赖内部知识库或外部资源来回答。 考虑到用户需要技术文档或信息,正确的做法是引导他们访问官方网站或开发者平台。比如,华为的开发者网站或开源社区可能有ArkUI-X的文档。同时,可能还需要提到GitHub仓库,因为很多开源项目托管在那里。 另外,用户可能需要了解ArkUI-X的核心功能,比如跨平台能力、声明式语法、组件库等。这些信息如果能在回答中简要概括,会帮助用户快速了解框架的优势和适用场景。 需要注意用户之前的问题是关于快速排序的,现在转向ArkUI-X,说明用户可能在进行跨领域开发,或项目需要多种技术结合。因此,回答要准确且提供实用资源链接,方便用户深入阅读。 最后,生成相关问题时要围绕ArkUI-X的安装、使用、与其他框架对比、最佳实践等,帮助用户进一步探索。确保问题具有引导性,覆盖用户可能感兴趣的方面。</think>关于ArkUI-X的技术文档与信息,以下是关键资源与说明: ### 1. 官方文档入口 ArkUI-X作为华为推出的跨平台应用开发框架,其官方文档可通过以下途径获取: - 华为开发者联盟官网:[HarmonyOS应用开发](https://developer.harmonyos.com/cn/docs/documentation/doc-guides/arkui-x-0000001580556049) - GitHub开源项目主页:[ArkUI-X仓库](https://github.com/arkui-x) ### 2. 核心功能特性 $$ \text{ArkUI-X} = \text{声明式UI架构} \times \text{跨平台编译} \times \text{统一API设计} $$ 主要技术特点包括: - 支持HarmonyOS/Android/iOS多平台部署 - 基于ArkUI的声明式开发范式 - 提供TS/JS/C++多语言开发接口 - 集成方舟编译器实现跨端编译 ### 3. 快速开始示例 ```typescript // 创建跨平台基础组件 @Component struct HelloPage { @State message: string = 'ArkUI-X' build() { Column() { Text(this.message) .fontSize(30) .onClick(() => { this.message = 'Hello World' }) } } } ``` ### 4. 开发工具要求 - DevEco Studio 3.1+(需安装ArkUI-X插件) - Node.js 16+ - Android SDK/iOS开发环境(按需配置)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

两块三刀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值