用户应用程序
鸿蒙应用程序有两种形态
- 传统方式的需要安装的应用
- 提供特定功能,免安装的应用(原子化服务)
用户应用程序包结构
HarmonyOS的用户应用程序包以APP Pack(Application Package)形式发布,它是由一个或多个HAP(HarmonyOS Ability Package)以及描述每个HAP属性的pack.info组成。HAP是Ability的部署包,HarmonyOS应用代码围绕Ability组件展开。
一个HAP是由代码、资源、第三方库及应用配置文件组成的模块包,可分为entry和feature两种模块类型。
entry:应用的主模块。一个APP中,对于同一设备类型,可以有一个或多个entry类型的HAP,来支持该设备类型中不同规格(如API版本、屏幕规格等)的具体设备。如果同一设备类型存在多个entry模块,则必须配置distroFilter分发规则,使得应用市场在做应用的云端分发时,对该设备类型下不同规格的设备进行精确分发。
feature:应用的动态特性模块。一个APP可以包含一个或多个feature类型的HAP,也可以不含。只有包含Ability的HAP才能够独立运行。
声明:该图来自鸿蒙官网HAP是基础的部署包,一个APP中可以包含多个HAP。同一类型的设备,可配置多个entry以适应不同的规格。同一规格的设备,如果存在多个entry需要写分发策略,意思就是说需要保证分配到具体设备中的app包中只能包含一个entry,可包含零个或多个feature,如上图中的包结构。
HAP包含ability可独立运行。
创建鸿蒙应用后,会自动添加一个entry,可在其中实现逻辑,libs路径保存库文件(so,jar,bin,har等二进制文件)resources路径保存资源文件。
真机调试时,推入的是签名后的HAP包。
{
"summary": {
"app": {
"bundleName": "com.tdtech.calculatortest",
"version": {
"code": 1000000,
"name": "1.0.0"
}
},
"modules": [
{
"mainAbility": "com.tdtech.calculatortest.MainAbility",
"deviceType": [
"phone"
],
"abilities": [
{
"name": "com.huawei.agconnect.core.ServiceDiscovery"
},
{
"name": "com.tdtech.calculatortest.MainAbility",
"label": "$string:entry_MainAbility"
}
],
"distro": {
"moduleType": "entry",
"installationFree": false,
"deliveryWithInstall": true,
"moduleName": "entry"
},
"apiVersion": {
"compatible": 4,
"releaseType": "Release",
"target": 5
}
}
]
},
"packages": [
{
"deviceType": [
"phone"
],
"moduleType": "entry",
"deliveryWithInstall": true,
"name": "entry-debug-rich-unsigned"
}
]
}
pack.info中存储了包结构中的app信息,模块信息,分发策略,设备类型等信息。简单应用调试时,并未打成app包进行调试,而是直接打成HAP包进行调试的。