HarmonyOS 鸿蒙Next HAR编译成字节码问题

HarmonyOS 鸿蒙Next HAR编译成字节码问题

HAR编译成字节码问题

DevEco Studio版本:

Build Version: 5.0.3.806

参考  构建字节码格式的HAR的链接配置

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-hvigor-build-har-V5#section179161312181613

在build sdk成har包时报错:

/Users/zhangquanji834/Applications/DevEco-Studio.app/Contents/tools/ohpm/bin/ohpm install --all --registry https://repo.huaweicloud.com/repository/npm/

ohpm ERROR: local dependency “pav_model_repository” found in “/Users/zhangquanji834/DevEcoStudioProjects/ocr_online_hos/ocr_sdk_harmony/Ocr_Online/sdk/oh-package.json5” does not match the actual name “lib_pav_model_repository” of its oh-package.json5

ohpm ERROR: local dependency “pav_esg_token_fetcher” found in “/Users/zhangquanji834/DevEcoStudioProjects/ocr_online_hos/ocr_sdk_harmony/Ocr_Online/sdk/oh-package.json5” does not match the actual name “lib_pav_esg_token_fetcher” of its oh-package.json5

ohpm ERROR: local dependency “pav_common” found in “/Users/zhangquanji834/DevEcoStudioProjects/ocr_online_hos/ocr_sdk_harmony/Ocr_Online/sdk/oh-package.json5” does not match the actual name “lib_pav_common” of its oh-package.json5

ohpm ERROR: local dependency “iobs_library” found in “/Users/zhangquanji834/DevEcoStudioProjects/ocr_online_hos/ocr_sdk_harmony/Ocr_Online/sdk/oh-package.json5” does not match the actual name “iobslibrary” of its oh-package.json5

ohpm ERROR: local dependency “@patech/aisdk” found in “/Users/zhangquanji834/DevEcoStudioProjects/ocr_online_hos/ocr_sdk_harmony/Ocr_Online/sdk/oh-package.json5” does not match the actual name “aisdk” of its oh-package.json5

ohpm ERROR: Install failed, detail: There are some dependency names that are inconsistent with the actual package names.

Process finished with exit code 1

要编译的sdk依赖了其它的sdk har包:iobs_library,pav_model_repository,pav_esg_token_fetcher等,这些不是字节码的har包。

1.请问依赖的har包也是要配置成字节码的配置后打包成新的har包吗。要打包的sdk是配置成字节码的,而依赖其它的libs的har不是字节码的 配置,这个需求支持不,因为引用第三方har无法控制和要求对方提供字节har包。

2.主工程的app依赖的libs下的har也会有些是字节码,有些不是,这个是否能正确编译成hap应用文件 ?


更多关于HarmonyOS 鸿蒙Next HAR编译成字节码问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

这边报错是 依赖别名和 实际名称没有匹配,

useNormalizedOHMUrl 为 true ,需要 依赖别名 和 实际依赖的模块中的 oh-package.json5文件中 的 name 字段的值保持一致,

如 ,这里需要将 pav_model_repository 这个别名改为 lib_pav_model_repository ,或者将 lib_pav_model_repository模块中 oh-package.json5文件中 的 name 字段的值改为 pav_model_repository

关于 字节码har,

第一个问题, 不需要,依赖的har是没必要主动配置成 字节码har的,字节码har打包时需要生成二进制的格式,产物中包含abc字节码,

第二个问题,正常来说是可以的,就是需要注意一下useNormalizedOHMUrl 相关的问题,要注意引用方式、路径等符合规范

关于字节码har的说明可以参考文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-hvigor-build-har-V5#section179161312181613

好处大致有以下几点

被其他模块依赖/使用时,不需要再对依赖的HAR中的代码进行语法检查和编译等操作,可以有效提升应用模块的编译构建效率;

提高发布到中心仓的安全性;

如果字节码HAR未开启混淆,则后续字节码HAR被集成使用时,将不会再对HAR包进行混淆,减少混淆导致的运行报错

更多关于HarmonyOS 鸿蒙Next HAR编译成字节码问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS 鸿蒙Next HAR编译成字节码的过程主要涉及将HAR(HarmonyOS Application Archive)包中的源代码和资源文件转换为鸿蒙系统能够直接执行的字节码格式。以下是该过程的核心要点:

  1. HAR包解析:首先,编译器会解析HAR包,提取出其中的源代码文件(如ETS、JS等)、资源文件(图片、音频等)以及配置文件。

  2. 语法与语义分析:对提取出的源代码进行语法和语义分析,确保代码符合鸿蒙系统的编程规范,并生成中间表示(IR)。

  3. 优化与字节码生成:对中间表示进行优化,以提高执行效率,并最终生成鸿蒙系统能够识别的字节码。这个过程中,编译器会进行各种优化操作,如常量折叠、循环展开等。

  4. 打包与签名:将生成的字节码与资源文件一起打包,并添加数字签名以确保包的完整性和安全性。

  5. 输出:最终输出一个可供鸿蒙系统直接加载和执行的字节码包。

请注意,以上过程高度依赖于鸿蒙系统的编译器和构建工具链。开发者在编译HAR包时,应确保使用与鸿蒙系统版本相匹配的编译器和构建工具。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部