HarmonyOS 电脑带有服务器二进制码打包

1.背景:
因为需求原因需要在使用本地ai模型,需要将服务端的代码打包成一个二进制,然后放在客户端,调用成一个服务,供客户端和h5通http的方式进行调用,因为鸿蒙端不支持在本地开启一个单个进程,所以采用了ndk方式在C端即C++端使用fork() 去开辟一个子进程,然后通过execve()方式将二进制成的hnp调用起来,因为使用hnp包打成的hap包只能在电脑端安装(咨询鸿蒙端,那边提示,目前hnp在手机和pad上没有使用场景,所以无安装)基于这些,采用了将鸿蒙的电脑端打成的hap包和手机/pad端打成的hap包,都放到app包中:

  1. 先打成hnp包:a:先在同一个文件夹下创建下面三个文件夹,然后将后端给的二进制放到bin文件夹下(注意:命名是:aipcserverharmony,因为在C++中调用服务的时候需要根据这个命名去找到二进制文件调用)
    image.png

    打包hnp的命令行:这个是我打包的命令行
    hnpcli pack -i /Users/edy/Desktop/dddd/aipcserverharmony -o /Users/edy/Desktop/dddd/out -n aipcserverharmony -v 1.0
    hnpcli 工具位置:在安装的sdk目录toolchains目录下
    image.png

    hnp打包的官网地址:https://gitee.com/openharmony/startup_appspawn/blob/master/service/hnp/README_zh.md
    2.在项目的根目录下创建一个hnp包,并且在包中创建一个arm64-v8a将hnp包放到当前目录下:如图:
    image.png

    3.打包含hnp包的到hap包:
    首先需要通过编译器打出hap(就的打包方式)然后通过命令行把这个进行一个拆包:
    java -jar app_unpacking_tool.jar --mode <option> --hsp-path <options> --out-path [option] --force [option] --libs true --cpu-abis [option]
    image.png

    4.在通过命令行将hnp打成一个hap包
    java -jar app_packing_tool.jar --mode hap --json-path --maple-so-path [option] --profile-path [option] --maple-so-dir [option] --dex-path [option] --lib-path [option] --resources-path [option] --index-path [option] --out-path --force [option] --compress-level 5
    image.png

    5.通过这些命令行:打成一个没有签名的hap包
    java -jar app_packing_tool.jar --mode app [--hap-path ] [--hsp-path ] --out-path [--signature-path ] [--certificate-path ] [--pack-info-path ] --force [--encrypt-path ] [--pac-json-path ]
    image.png
  2. 在通过签名命两行对app包签名:


    image.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容