应用基础知识

App

HarmonyOS 的应用软件包以 APP Pack(Application Package)形式发布,它是由一

个或多个 HAP(HarmonyOS Ability Package)以及描述每个 HAP 属性的 pack.info 组

成。 HAP 是 Ability 的部署包, HarmonyOS 应用代码围绕 Ability 组件展开。

一个 HAP 是由代码、资源、第三方库及应用配置文件组成的模块包,可分为 entry 和

feature 两种模块类型,如下图所示:

f589993263499fb668475dd30245ca44.png

Ability

Ability 是应用所具备的能力的抽象,一个应用可以包含一个或多个 Ability。 Ability 分为

两种类型: FA(Feature Ability)和 PA(Particle Ability)。 FA/PA 是应用的基本组成

单元,能够实现特定的业务功能。 FA 有 UI 界面,而 PA 无 UI 界面。

工程目录介绍

cbdf44a95258f8ed348ca94f15295127.png

entry

entry是应用的主模块。一个 APP 中,对于同一设备类型必须有且只有一个 entry 类型的

HAP,可独立安装运行。

feature

应用的主模块。一个 APP 中,对于同一设备类型必须有且只有一个 entry 类型的

HAP,可独立安装运行

libs

libs库文件是应用依赖的第三方代码形式,存放在 libs 目录,是.so 文件。

resources

resources库文件是应用依赖的第三方代码形式,存放在 libs 目录,是.so 文件。

config.json

配置文件 (config.json) 是应用的 Ability 信息,用于声明应用的 Ability,以及应用所需

权限等信息。应用的每个 HAP 的根目录下都存在一个“config.json” 配置文件,主要涵盖以下三个方

面:

应用的全局配置,包含应用的包名、生产厂商、版本号等基本信息

应用在具体设备上的配置信息

HAP包的配置信息,包含每个Ability必须定义的基本属性(如包名、类名、类型、以及Ability提供的能力),以及应用访问系统或其它应用受保护部门所需的权限等。

config.json文件

{

"app": {

"bundleName": "com.example.helloword",

"vendor": "example",

"version": {

"code": 1,

"name": "1.0"

},

"apiVersion": {

"compatible": 3,

"target": 3

}

},

"deviceConfig": {},

"module": {

"package": "com.example.helloword",

"name": ".HelloWord",

"reqCapabilities": [

"video_support"

],

"deviceType": [

"tv"

],

"distro": {

"deliveryWithInstall": true,

"moduleName": "entry",

"moduleType": "entry"

},

"abilities": [

{

"skills": [

{

"entities": [

"entity.system.home"

],

"actions": [

"action.system.home"

]

}

],

"orientation": "landscape",

"formEnabled": false,

"name": "com.example.helloword.MainAbility",

"icon": "$media:icon",

"description": "$string:mainability_description",

"label": "HelloWord",

"type": "page",

"launchType": "standard"

}

]

}

}

应用的配置文件“config.json” 中由“app” 、 “deviceConfig” 和“module” 三个部分组成,缺一不可。

属性名称含义数据类型是否可缺省app表示应用的全局配置信息。同一个应用的不同HAP包的“app”配置必须保持一致对象否

deviceConfig表示应用在具体设备上的配置信息对象否

module表示HAP包的配置信息,该标签下的配置只对当前的HAP包生效对象否

app对象的内部结构

属性名称子属性名称含义数据类型是否可缺省bundleName–表示应用的包名,用于标识应用的唯一性。采用反域名形式的字符串表示(比如:com.huawei.himusic)。建议第一级为域名后缀“com”,第二级为厂商/个人名,第三级为应用名,也可以采用多级。支持的字符串长度为7~127字节字符串否

vendor–表示对应用开发厂商的描述。字符串长度不超过255字节字符串可缺省,缺省值为空

version–表示应用的版本信息对象否

code表示应用的版本号,仅用于HarmonyOS管理该应用,对用户不可见。取值为大于零的整数数值否

name表示应用的版本号,用于向用户呈现,取值可以自定义字符串否

apiVersion–表示应用依赖的HarmonyOS的API版本对象否

compatible表示应用运行需要的API最小版本。取值为大于零的整数数值否

target表示应用运行需要API目标版本,取值为大于零的整数数值可缺省,缺省值为应用所在设备的当前API版本

deviceConfig对象的内部结构

deviceConfig 包含在具体设备上的应用配置信息,可以包含default、car、tv、wearable、liteWearable、smartVision等属性。default 标签内的配置是适用于所有设备通用的,其他设备类型如果有特殊的需求,则需要在该设备类型的标签下进行配置。内部结构说明如下:

属性名称含义数据类型是否可缺省default表示所有设备通用的应用配置信息对象否

car表示车机特有的应用配置信息对象可缺省,缺省为空

tv表示智慧屏特有的应用配置信息对象可缺省,缺省为空

wearable表示智能穿戴特有的应用配置信息对象可缺省,缺省为空

liteWearable表示轻量级智能穿戴特有的应用配置信息对象可缺省,缺省为空

smartVision表示智能摄像头特有的应用配置信息对象可缺省,缺省为空

default、car、tv、wearable、liteWearable、smartVision等对象的内部结构说明如下:

属性名称含义数据类型是否可缺省process表示应用或者Ability的进程名。如果在“deviceConfig”标签下配置了“process”标签,则该应用的所有Ability都运行在这个进程中,如果在“abilities”标签,则该Ability就运行在这个进程中。该标签仅适用于智慧屏、智能穿戴、车机。字符串可缺省,缺省为应用的软件包名

directLaunch表示应用是否支持在设备为解锁状态直接启动。如果配置为“true”,则表示应用支持在设备为解锁状态下启动。使用场景举例:应用支持在设备为解锁情况下接听来电。该标签适用于智慧屏、智能穿戴、车机布尔类型可缺省,缺省为false

supportBackup表示应用是否支持备份和恢复。如果配置为“false”,则不支持该应用执行备份或恢复操作。该标签仅适用于智慧屏、智能穿戴、车机布尔类型可缺省,缺省为false

compressNativeLibs表示libs库是否以压缩存储的方式打包到HAP包中,如果配置为“false”,则libs库以不压缩的方式存储,HAP包在安装是无需解压libs,运行时会直接从HAP内加载libs库。该标签仅适用于智慧屏、智能穿戴、车机布尔类型可缺省,缺省为true

network表示网络安全性配置,该标签允许应用通过配置文件的安全申明来自定义其网络安全,无需修改应用代码对象可缺省,缺省为空

network对象的内部结构说明:

属性名称含义数据类型是否可缺省usesCleartext表示是否运行应用使用明文网络流量(例如:明文HTTP)。默认值为“false”。true:允许应用使用明文流量的请求。false:拒绝应用使用明文流量的请求布尔类型可缺省,缺省为空

securityConfig表示应用的网络安配置信息对象可缺省,缺省为空

securityConfig 对象的内部结构说明

属性名称子属性名称含义数据类型是否可缺省domainSettings–表示自定义的网域范围的安全配置,支持多层嵌套,即一个domainSettings对象中允许嵌套更小网域范围的domainSettings对象对象可缺省,缺省为空

cleartextPermitted表示自定义的网域范围内是否允许明文流程传输。当useCleartext和secutityConfig同时存在时,自定义网域是否允许明文流量传输以cleartextPermitted的取值为准。true:允许明文流量传输。false:拒绝明文流量传输布尔类型否

comains表示域名配置信息,包含两个参数:subDomains和name。subDomains(布尔类型):表示是否包含子域名。如果为“true”,此网域规则将与相应网域及所有子网域(包括子网域的子网域)匹配。否则,该规则仅适用于精准匹配项。name(字符串):表示域名名称。对象数组否

module 对象的内部结构

module对象包含 HAP 包的配置信息,内部结构如下:

属性名称含义数据类型是否可缺省package表示HAP的包结构名称,在应用内字符串否

name表示HAP的名称字符串否

reqCapabilities表示设备提供的能力字符串否

reqPermissions表示该应用所需要的权限数组是

deviceType允许运行的设备类型数组否

distro表示HAP在发布时的具体描述对象否

abilities表示项目中所有的Ability数组否

abilities 数组中的内部结构:

属性名称含义数据类型是否可缺省

skills表示当前Ability可以接受的Intent类型数组否

orientation表示 Ability 的显示模式,landscape表示竖屏显示字符串否

formEnabled表示当前 Ability是否提供卡片的能力布尔值是

name表示当前 Ability 的包名字符串否

icon表示 Ability 的图标字符串是

description表示 Ability 的描述字符串是

label表示 Ability对于用户显示的名称字符串否

type表示 Ability 的类型。page为页面级的 Ability 。serves表示用户执行后台任务的 Ability字符串否

launchType表示 Ability 的启动模式。standard表示标准的启动模式字符串否

pack.info

描述应用软件包中每个 HAP 的属性,由 IDE 编译生成,应用市场根据该文件进行拆包和

HAP 的分类存储。 HAP 的具体属性包括:

• delivery-with-install: 用于标识该 HAP 是否需要在主动安装时进行安装。

• name: HAP 文件名。

• module-type:模块类型, entry 或 feature。

• device-type:用于标识支持该 HAP 运行的设备类型。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐