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包。
所以请教下各位大神,现在如何才能编译小型系统能用的包,难道不支持了吗?
用华为官方的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)与小型系统的运行时环境不兼容导致的。
关键点分析:
-
编译产物名称变化:从OpenHarmony 4.x到5.x,编译输出的HAP包命名规则发生了变化。
entry-debug-lite-unsigned.hap这个格式是旧版(API 7/8)针对小型系统的特定产物名称。在API 18(OH 5.1)及之后,标准编译输出为entry-default-unsigned.hap。名称中“lite”字段的缺失是正常的,不代表包不适用于小型系统。 包的类型由工程配置和编译目标决定。 -
错误根源:
ERR_APPEXECFWK_INSTALL_FAILED_PARSE_PROFILE_ERROR错误直接指向HAP包的解析失败,最可能的原因是config.json文件中的某些配置项与小型系统的能力不匹配。小型系统(Lite)与标准系统(Standard)支持的API、组件、权限模型等存在差异。
解决方案:
你需要确保你的DevEco Studio工程是针对OpenHarmony 5.1小型系统正确配置的。
-
确认并设置正确的SDK与编译目标:
- 在DevEco Studio中,打开你的工程。
- 检查
build-profile.json5文件。确保"compileSdkVersion"和"compatibleSdkVersion"设置为8或9(注意:对于OpenHarmony 5.1小型系统,应使用API 8或9,而不是API 18。API 18主要面向标准系统)。API 8/9是OpenHarmony为小型系统定义的API版本。 - 在
module.json5文件中,确认"target"字段。对于小型系统,它应该设置为"default"或明确的小型系统设备类型(如"lite",具体取决于模板)。"type": "entry"保持不变。
-
使用正确的工程模板:
- 在创建新工程时,务必选择 “Empty Ability” (OpenHarmony) 模板,并在接下来的设备类型选择中,明确选择“Lite” 或类似标识小型系统的选项。这将确保初始的
config.json/module.json5配置适用于小型系统环境。
- 在创建新工程时,务必选择 “Empty Ability” (OpenHarmony) 模板,并在接下来的设备类型选择中,明确选择“Lite” 或类似标识小型系统的选项。这将确保初始的
-
简化
config.json/module.json5配置:- 小型系统支持的配置项比标准系统少。检查并精简你的配置文件,移除小型系统可能不支持的高级特性声明,例如复杂的权限、某些后台服务类型、过于复杂的UI组件声明等。重点保留最基本的应用信息、所需的最低权限和入口Ability配置。
-
编译与安装:
- 完成上述配置后,使用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,并使用为小型系统设计的工程模板或检查调整现有配置,确保配置文件内容与小型系统的能力集匹配。

