HarmonyOS应用程序包-(下)

news/2024/7/21 8:16:39 标签: harmonyos, 华为, 鸿蒙系统

HarmonyOS应用程序包-(下)

1.多HAP的开发调试与发布部署流程

多HAP的开发调试与发布部署流程如下图所示。

图1 多HAP的开发调试与发布部署流程

img

开发

开发者通过DevEco Studio工具按照业务的需要创建多个Module,在相应的Module中完成自身业务的开发。

调试

通过DevEco Studio编译打包,生成单个或者多个HAP,即可基于HAP进行调试。如需根据不同的部署环境、目标人群、运行环境等,将同一个HAP定制编译为不同版本,请参见定制编译指导。

在调试前,需要先安装或更新HAP,以下介绍具体做法。

  • 使用DevEco Studio进行调试

    使用指导可参考应用程序包调试方法,其中包括了单HAP与多HAP通过DevEco Studio工具的安装调试方法。

  • 使用hdc工具(可通过HarmonyOS SDK获取,在SDK的toolchains目录下)进行调试

    在调试前,需要先安装或更新HAP,此处有两种方式。

  1. 直接使用hdc安装、更新HAP。

    HAP的路径为开发平台上的文件路径,以Windows开发平台为例,命令参考如下:

    // 安装、更新,多HAP可以指定多个文件路径
    hdc install C:\entry.hap C:\feature.hap
    // 执行结果
    install bundle successfully.
    // 卸载
    hdc uninstall com.example.myapplication
    // 执行结果
    uninstall bundle successfully.
    
  2. 先执行hdc shell,再使用bm工具安装、更新HAP。

    HAP的文件路径为真机上的文件路径,命令参考如下:

    // 先执行hdc shell才能使用bm工具
    hdc shell
    // 安装、更新,多HAP可以指定多个文件路径
    bm install -p /data/app/entry.hap /data/app/feature.hap
    // 执行结果
    install bundle successfully.
    // 卸载
    bm uninstall -n com.example.myapplication
    // 执行结果
    uninstall bundle successfully.
    

    完成HAP安装或更新后,即可参考相关调试命令进行调试。

发布

当开发的程序包满足发布要求时,可以在工具中打包编译生成App包。将该App包上架到应用市场云端,应用市场会对上架的App包校验签名,校验签名通过后会将App包中的HAP拆分出来,同时对拆分出的HAP重新添加签名,然后对HAP进行分发。

部署

用户在设备上的应用市场客户端能够看到各种各样的应用,这些应用均由云端分发而来,有些是多HAP应用,有些是单HAP应用。用户选择某个应用后,应用市场将下载应用所包含的全部deliveryWithInstall设置为“true”的HAP。

应用在终端设备上的安装

下载完成后,应用市场客户端再调用系统中包管理服务的安装接口安装下载的HAP,包管理服务以应用为单位将其中所有HAP部署到指定目录下,以完成应用的安装。

2.多HAP使用规则

  • App Pack包不能直接安装到设备上,只是上架应用市场的单元。
  • App Pack包中所有HAP的配置文件中的bundleName标签必须一致。
  • App Pack包中所有HAP的配置文件中的versionCode标签必须一致。
  • App Pack包中同一设备类型的所有HAP中必须有且只有一个entry类型的HAP,feature类型的HAP可以有一个或者多个,也可以没有。
  • App Pack包中的每个HAP必须配置moduleName标签,同一设备类型的所有HAP对应的moduleName标签必须唯一。
  • 同一应用的所有HAP签名证书要保持一致。上架应用市场是以App Pack的形式上架,并对其进行了签名。应用市场分发时会将所有HAP从App Pack中拆分出来,同时对其中的所有HAP进行重签名,这样保证了所有HAP签名证书的一致性。在调试阶段,开发者通过命令行或IDE将HAP安装到设备上时要保证所有HAP签名证书一致,否则会出现安装失败的问题。

3.多HAP运行机制及数据通信方式

多HAP机制主要是为方便开发者进行模块化管理。HAP和应用运行时的进程并不是一一对应的,具体运行机制如下:

  • 默认情况下,应用中(同一包名)的所有UIAbility、ServiceExtensionAbility、DataShareExtensionAbility运行在同一个独立进程中,其他同类型ExtensionAbility分别运行在单独的进程。
  • HAP支持在module.json5(Stage模型)或者config.json(FA模型)中通过process标签配置单独的进程(仅系统应用支持,三方应用不支持)。配置了process的HAP,其组件运行在单独的process进程中,多个HAP可以配置相同的process,则这些HAP运行在相同进程中,process配置的详细说明请参见module.json5配置文件。
  • 应用运行时,同一进程中的UIAbility组件被启动时,才加载对应HAP的资源和代码。

基于上述机制,多HAP数据通信方式如下:

  • 同一进程内的数据通信,请参见线程间通信。
  • 跨进程的数据通信,请参见进程间通信。
  • 多HAP如果运行在同一进程,则多HAP间组件的通信方式与同一HAP内组件的通信方式相同。

4.应用程序包安装和卸载流程

开发者

开发者可以通过调试命令进行应用的安装和卸载,可参考多HAP的调试流程。

图1 应用程序包安装和卸载流程(开发者)

img

终端设备用户

开发者将应用上架应用市场后,终端设备用户可以在终端设备上使用应用市场进行应用的安装和卸载。

图2 应用程序包安装和卸载流程(终端设备用户)

img

5.应用程序包更新流程

HarmonyOS包管理服务提供了应用程序包更新能力,更新方式如下。

  1. 应用市场内更新:新版本应用通过应用市场上架后,应用市场通知终端用户该应用有新版本,终端用户可以根据通知到应用市场(客户端)进行应用升级。
  2. 应用内检测升级:终端用户启动应用时,应用市场检测到该应用有新版本会通知终端用户,可以到应用市场进行应用的下载更新。

http://www.niftyadmin.cn/n/5285664.html

相关文章

C# 读取Word表格到DataSet

目录 功能需求 Office 数据源的一些映射关系 范例运行环境 配置Office DCOM 关键代码 组件库引入 ​核心代码 杀掉进程 总结 功能需求 在应用项目里,多数情况下我们会遇到导入 Excel 文件数据到数据库的功能需求,但某些情况下,也存…

swing快速入门(二十三)弹球小游戏

注释很详细,直接上代码 上一篇 新增内容 1. 键盘响应监听 2. 使用定时器事件更新画板 3. 定时器事件的开始与暂停 4. 弹球小游戏的坐标逻辑判断 import javax.swing.*; import java.awt.*; import java.awt.event.*;public class swing_test_19 {//创建一个窗…

【excel密码】Excel工作表不能复制或移动

为什么excel文件打开之后,工作表里是可以编辑的,但是想要移动工作表或者复制、重命名等操作,这是什么原因?其实这是因为设置了工作簿保护,设置了保护的工作簿无法对整张工作表进行操作。 想要取消这种保护,…

【电源】带SMBus接口 ISL9241HRTZ、ISL9238CHRTZ、ISL9538BHRTZ、ISL9538CHRTZ 2-4CEL 电池充电器 IC

1、ISL9241HRTZ 具有SMBus接口和USB供电功能的降压-升压可配置电池充电器 32TQFN ISL9241是一款数字可配置的降压-升压电池充电器,可支持窄电压直接充电(NVDC)和混合功率降压-升压(HPBB/Bypass)充电,并使用…

ES 索引关闭source后是否可以更新?

## 背景 ES优化有一个常用手段是将不需要返回的字段的source关闭掉,以此节省磁盘空间,同时也节省内存;比如向量字段一般关闭source; ## 疑问 ES 索引(部分字段 或者 全部字段)关闭source后是否可以更新&…

【Qt-Widget】

Qt编程指南 ■ QWidget■ QTabWidget■ QTableWidget■ QListWidget■ QStackedWidget■ QCalendarWidget■ ■ QWidget vWidget[i] new QWidget(); vWidget[i]->setAutoFillBackground(true); 该函数用于设置当窗口作为被包含窗口时, 是否需要绘制背景。 注意&#xff1a…

sql_lab之sqli中的搜索型注入

搜索型注入 原理是运用模糊查询: select * from users where username like %a% 1.找到具有模糊查询的搜索框的注入点 2.构造闭合 因为模糊查询的代码是 select * from users where username like %a% 所以应该 鱼%’ -- s 判断构造闭合的函数是否正确 鱼%…

GD库实现自动裁剪PNG图片多余透明区域

AI抠图可以自动将图片中主体扣取出来,但是图片尺寸不变,就导致主体周边存在多余的透明图层: 现在需要将多余透明图层自动删除掉。 之前只知道imagecrop(),按理说顺序应该是检测确定图片主体的x,y坐标及裁剪宽度和高度。 首先确定…