# HnpProcesses **Repository Path**: scenario-samples/hnp-processes ## Basic Information - **Project Name**: HnpProcesses - **Description**: 本项目为HarmonyOS PC中使用Qt实现集成hnp包。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-18 - **Last Updated**: 2025-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 项目介绍 本项目为HarmonyOS PC中使用Qt实现集成hnp包。 ## 使用说明 修改mainprocess\entry\src\main\cpp\qtModule\CMakeLists.txt中的set(QT_PREFIX "D:\\arkTSProject\\beij\\AppDownload\\qtcef\\ohos17_arm64-v8a")为编译出的Qt产物目录 ## 环境搭建 一、操作前准备:Native软件包 1. 准备Qt工程,并在cpp文件下实现自定义功能。 2. 点击Build->Build Hap(s)进行编译,获得可执行文件。 3. // Start solution10 根目录 |__bin:可执行二进制存放路径; |__cfg:配置文件存放路径,可选; |__lib:依赖库存放路径,可选; |__hnp.json:hnp配置文件。 // End solution10 本样例中hnpNew软件包目录如下: // Start solution1 hnpNew |__bin │ |__MyQt |__hnp.json // End solution1 其中,配置文件hnp.json内容如下: // Start solution9 { "type":"hnp-config", #固定标识符“hnp-config” "name":"xxx", #Native软件名 "version":"1.1", #版本号 "install":{ "links":[ #软链接配置信息 { "source":"xxxxxx", "target":"xxxxxx" } ] } } // End solution9 // Start solution2 { "type":"hnp-config", "name":"MyQt", "version":"1.1", "install":{ "links":[ { "source":"/bin/MyQt", "target":"MyQt" } ] } } // End solution2 二、Native软件包打包 1. Native软件打包的目的是为了将Native软件打包成hnp文件以便后面上传到应用市场,为支持不同操作系统(linux、windows、mac、ohos),当前已在OpenHarmony SDK中提供了hnpcli工具,用户通过hnpcli命令进行打包。 hnpcli打包命令有两种使用方式。 - 一种是软件包里有hnp.json的打包命令: // Start solution3 hnpcli pack -i [待打包路径] < -o [输出路径] > 注: 1. 如果没有指定-o,则输出路径为当前目录。 2. 打包路径下有hnp.json配置文件,使用配置文件名里的软件名和版本号作为打包参数。 // End solution3 - 另一种是软件包里没有hnp.json的打包方式: // Start solution4 hnpcli pack -i [待打包路径] < -o [输出路径] > -n [软件名] -v [版本号] 注: 1. 打包路径下没有hnp.json配置文件,则需要用户传入-n和-v参数,否则打包失败(打包软件会根据入参在压缩文件根目录中主动生成hnp.json)。 // End solution4 打包成功后会在输出路径下生成"[Native软件名].hnp"的文件。 样例中对MyApp软件进行打包,由于hnpNew目录下存在hnp.json文件,不需要指定软件名和版本号。因此命令如下: // Start solution5 hnpcli pack -i ./hnpNew -o . // End solution5 三、hnp的集成与使用 1. 工程根目录下新增hnp根目录,hnp根目录下根据设备的操作系统ABI名称(例如arm64-v8a)创建文件夹,文件目录格式如下: // Start solution6 工程根目录 |__hnp #HAP包中新增hnp根目录 |__arm64-v8a #(ABI) |__MyQt.hnp // End solution6 2. 修改hap工程根目录下entry/src/main/module.json5文件,配置hnp包信息,需要在"module"字段下增加以下字段。"package"字段指定hnp包在ABI文件夹下相对路径,"type"指定hnp包类型,包含公有("public")和私有("private")类型。 3. 打包方式 DevEco暂时不支持编译带hnp的hap包,即使是项目中配置了hnp包相关内容,生成的hap包中也没有hnp包,这时需要对编译器的脚本做微调。 修改步骤: - 右键点击桌面DevEco图标,打开IDE安装路径。 - 编辑packing-tool-options.js文件。 路径:DevEco Studio\tools\hvigor\hvigor-ohos-plugin\src\builder\inner-java-command-builder\packing-tool-options.js 在文件最下面,添加以下代码: // Start solution7 addHnpPath(t) { return this.addFieldAndPath("--hnp-path", t); } // End solution7 - 编辑base-pack-hap-task.js文件。 路径:DevEco Studio\tools\hvigor\hvigor-ohos-plugin\src\tasks\base\base-pack-hap-task.js 在generateCommand函数中,添加以下代码: // Start solution8 let hnpPath = path_1.default.resolve(process.cwd(),'hnp'); if (fse.existsSync(hnpPath)) { a.addHnpPath(hnpPath); } // End solution8 两个文件修改后,重启DevEco Studio。再使用DevEco Studio的Build->Rebuild Project功能,即可编译待hnp的hap包。