deveco studio 如何编译出Openharmony 5.1 小型系统的可用的hap包

deveco studio 如何编译出Openharmony 5.1 小型系统的可用的hap包 之前在OH41的时候,使用deveco 3.1版本编译API 7的hap包,名字大概是 entry-debug-lite-unsigned.hap是可以成功安装上去的(使用 bm install -p 命令)。

现在发现deveco 3.1已经使用不了API 7,上报错误是SDK的下载源都没有了。然后用API 8 编译,也是编译不出来entry-debug-lite-unsigned.hap了。(现在这边已经完全编译不出来可用的hap包了,尴尬。。。)

目前使用的是 OH51 小型系统,下载了deveco studio 6.0.0 和 5.1.0 5.1.1 这三个版本,尝试了API18 (OH系统内看到是18)。想编译hap包,编译出来的名字是 entry-default-unsigned.hap 然后无法安装在OH51 的小型系统。报错 ERR_APPEXECFWK_INSTALL_FAILED_PARSE_PROFILE_ERROR。

目前怀疑的点是 lite 这个字段的缺失。因为 lite 在OH源码里面基本对应小型系统。

猜测是编译出来的hap包不是针对小型系统的。所以不能安装。然后还有就是尝试过API 8,也是编译不出来lite的hap包。

所以请教下各位大神,现在如何才能编译小型系统能用的包,难道不支持了吗?


6 回复

用华为官方的AI文档工具试试能不能给出解决方案


谢谢您的建议,这个我已经试过了,改了runtimeOS 为 OpenHarmony 也是不行。我是感觉现在只能编译 OpenHarmony的全量系统。根源在lite用的hap包编译不出来。

而且deveco 3.1.0 API 7的时候,是需要把devicetype改成smartVision。后面发现deveco 6.0.0 等高版本 + API 18 已经去除了smartVision的支持。

但是我看源码里面的setting的例子,里面config.json 又有smartVision的声明。

然后我自己在OH5.1源码编译了OHOS-SDK,也是没用。

小伙伴,那只有将相应问题使用工单系统反馈给咱们官方看看呢。

好的,谢谢您,

在Deveco Studio中编译OpenHarmony 5.1小型系统的HAP包,需确保项目配置正确。首先,确认工程类型为小型系统(如Hi3516DV300等)。在module.json5中,将"deviceType"设置为小型系统支持的设备类型。然后,在Deveco Studio的工具栏中选择对应的小型系统设备作为编译目标。点击“Build”菜单中的“Build HAP(s)”即可生成HAP包。

根据你的描述,核心问题在于OpenHarmony 5.1(API 18)的小型系统(Lite系统)对HAP包的格式和编译方式有特定要求。你遇到的ERR_APPEXECFWK_INSTALL_FAILED_PARSE_PROFILE_ERROR错误,通常是由于HAP包的配置文件(config.json)与小型系统的运行时环境不兼容导致的。

关键点分析:

  1. 编译产物名称变化:从OpenHarmony 4.x到5.x,编译输出的HAP包命名规则发生了变化。entry-debug-lite-unsigned.hap这个格式是旧版(API 7/8)针对小型系统的特定产物名称。在API 18(OH 5.1)及之后,标准编译输出为entry-default-unsigned.hap名称中“lite”字段的缺失是正常的,不代表包不适用于小型系统。 包的类型由工程配置和编译目标决定。

  2. 错误根源ERR_APPEXECFWK_INSTALL_FAILED_PARSE_PROFILE_ERROR错误直接指向HAP包的解析失败,最可能的原因是config.json文件中的某些配置项与小型系统的能力不匹配。小型系统(Lite)与标准系统(Standard)支持的API、组件、权限模型等存在差异。

解决方案:

你需要确保你的DevEco Studio工程是针对OpenHarmony 5.1小型系统正确配置的。

  1. 确认并设置正确的SDK与编译目标

    • 在DevEco Studio中,打开你的工程。
    • 检查 build-profile.json5 文件。确保 "compileSdkVersion""compatibleSdkVersion" 设置为 89注意:对于OpenHarmony 5.1小型系统,应使用API 8或9,而不是API 18。API 18主要面向标准系统)。API 8/9是OpenHarmony为小型系统定义的API版本。
    • module.json5 文件中,确认 "target" 字段。对于小型系统,它应该设置为 "default" 或明确的小型系统设备类型(如"lite",具体取决于模板)。"type": "entry" 保持不变。
  2. 使用正确的工程模板

    • 在创建新工程时,务必选择 “Empty Ability” (OpenHarmony) 模板,并在接下来的设备类型选择中,明确选择“Lite” 或类似标识小型系统的选项。这将确保初始的 config.json / module.json5 配置适用于小型系统环境。
  3. 简化config.json / module.json5配置

    • 小型系统支持的配置项比标准系统少。检查并精简你的配置文件,移除小型系统可能不支持的高级特性声明,例如复杂的权限、某些后台服务类型、过于复杂的UI组件声明等。重点保留最基本的应用信息、所需的最低权限和入口Ability配置。
  4. 编译与安装

    • 完成上述配置后,使用DevEco Studio进行编译(Build > Build Haps(s))。
    • 编译成功后,在工程的 build > outputs > default 目录下找到生成的 entry-default-unsigned.hap 文件。
    • 使用 bm install -p [hap文件路径] 命令进行安装。如果配置正确,应该可以成功安装。

总结:问题不在于HAP包的文件名,而在于工程配置未针对OpenHarmony 5.1小型系统(API 8/9)进行适配。请将SDK版本调整为API 8或9,并使用为小型系统设计的工程模板或检查调整现有配置,确保配置文件内容与小型系统的能力集匹配。

回到顶部