文章目录
- 简述
- 一、创建HAR模块
- 二、编译HAR模块
- 三、应用配置文件(Stage模型)
- 四、应用配置文件(FA模型)
- 1、配置文件的内部结构
- (1)app
- (2)deviceConfig
- (3)module
- 五、资源分类与访问
- 分类
简述
HAR(Harmony Archive)是静态共享包,可以包含代码、C++库、资源和配置文件。通过HAR可以实现多个模块或多个工程共享ArkUI组件、资源等相关代码。HAR不同于HAP,不能独立安装运行在设备上,只能作为应用模块的依赖项被引用。
一、创建HAR模块
步骤一:点击工程目录顶部,右击
步骤二:进入页面,点击static library,之后点击next
创建成功!
二、编译HAR模块
按照图中操作:
编译构建的HAR可在模块下的build目录下获取,包格式为*.har。
三、应用配置文件(Stage模型)
在基于Stage模型开发的应用项目代码下,都存在一个app.json5及一个或多个module.json5这两种配置文件。
app.json5
主要包含以下内容:
- 应用的全局配置信息,包含应用的包名、开发厂商、版本号等基本信息。
- 特定设备类型的配置信息。
app.json5
示例:
{"app": {"bundleName": "com.application.myapplication","vendor": "example","versionCode": 1000000,"versionName": "1.0.0","icon": "$media:app_icon","label": "$string:app_name","description": "$string:description_application","minAPIVersion": 9,"targetAPIVersion": 9,"apiReleaseType": "Release","debug": false,"car": {"minAPIVersion": 8,}},
}
属性名称 | 含义 | 构成及是否可省 |
---|---|---|
bundleName | 标识应用的Bundle名称,用于标识应用的唯一性。该标签不可缺省。 | 字符串以字母、数字、下划线和符号“.”组成。 |
bundleType | 标识应用的Bundle类型,用于区分应用或者原子化服务。该标签可选值为app和atomicService : | 该标签可以缺省,缺省为app。 |
debug | 标识应用是否可调试,该标签由IDE编译构建时生成。 | 布尔值 / 该标签可以缺省,缺省为false。 |
icon | 标识应用的图标,标签值为图标资源文件的索引。 | 该标签不可缺省。 |
label | 标识应用的名称,标签值为字符串资源的索引。 | 该标签不可缺省。 |
description | 标识应用的描述信息,标签值是字符串类型(最大255个字节)或对描述内容的字符串资源索引。 | 该标签可缺省,缺省值为空。 |
vendor | 标识对应用开发厂商的描述。该标签的值是字符串类型(最大255个字节)。 | 该标签可以缺省,缺省为空。 |
versionCode | 标识应用的版本号,该标签值为32位非负整数。此数字仅用于确定某个版本是否比另一个版本更新,数值越大表示版本越高。开发者可以将该值设置为任何正整数,但是必须确保应用的新版本都使用比旧版本更大的值。 | 该标签不可缺省。 |
versionName | 标识应用版本号的文字描述,用于向用户展示。该标签仅由数字和点构成,推荐采用“A.B.C.D”四段式的形式。四段式推荐的含义如下所示。 第一段:主版本号/Major,范围0-99,重大修改的版本,如实现新的大功能或重大变化。 第二段:次版本号/Minor,范围0-99,表示实现较突出的特点,如新功能添加或大问题修复。 第三段:特性版本号/Feature,范围0-99,标识规划的新版本特性。 第四段:修订版本号/Patch,范围0-999,表示维护版本,修复bug。标签最大字节长度为127。 | 该标签不可缺省。 |
minAPIVersion | 标识应用运行需要的SDK的API最小版本。 | 由build-profile.json5中的compatibleSdkVersion生成。 |
targetAPIVersion | 标识应用运行需要的API目标版本。 | 由build-profile.json5中的compileSdkVersion生成。 |
apiReleaseType | 标识应用运行需要的API目标版本的类型,采用字符串类型表示。取值为“CanaryN”、“BetaN”或者“Release”,其中,N代表大于零的整数。Canary :受限发布的版本。Beta :公开发布的Beta版本。Release :公开发布的正式版本。该字段由DevEco Studio读取当前使用的SDK的Stage来生成。 | 该标签可缺省,由IDE生成并覆盖。 |
multiProjects | 标识当前工程是否支持多个工程的联合开发。 | 布尔值 |
car | 标识对car设备做的特殊配置,可以配置的属性字段有上文提到的:minAPIVersion、distributedNotificationEnabled。如果使用该属性对car设备做了特殊配置,则应用在car设备中会采用此处配置的属性值,并忽略在app.json5公共区域配置的属性值 | 该标签可缺省,缺省时car设备使用app.json5公共区域配置的属性值。 |
module.json5
主要包含以下内容:
- Module的基本配置信息,例如Module名称、类型、描述、支持的设备类型等基本信息。
- 应用组件信息,包含UIAbility组件和ExtensionAbility组件的描述信息。
- 应用运行过程中所需的权限信息。
module.json5
实例:
查表:
module表格
四、应用配置文件(FA模型)
每个应用项目必须在项目的代码目录下加入配置文件,这些配置文件会向HarmonyOS的编译工具、HarmonyOS操作系统和应用市场提供描述应用的基本信息。
应用配置文件需申明以下内容:
- 应用的软件包名称,应用的开发厂商,版本号等应用的基本配置信息,这些信息被要求设置在app这个字段下。
- 应用的组件的基本信息,包括所有的Ability,设备类型,组件的类型以及当前组件所使用的语法类型。
- 应用在具体设备上的配置信息,这些信息会影响应用在设备上的具体功能。
在FA模型的应用开发过程中,需要在config.json配置文件中对应用的包结构进行声明。
1、配置文件的内部结构
config.json
由app
、deviceConfig
和module
三个部分组成,缺一不可。
属性名称 | 含义 | 是否可缺省 |
---|---|---|
app | 标识应用的全局配置信息。同一个应用的不同HAP的app配置必须保持一致 | 不可缺省 |
deviceConfig | 标识应用在具体设备上的配置信息 | 不可缺省 |
module | 标识HAP的配置信息。该标签下的配置只对当前HAP生效 | 不可缺省 |
(1)app
app对象内部结构
(2)deviceConfig
deviceConfig对象内部结构
(3)module
module对象内部结构
config.json
实例:
{"app": {"vendor": "example","bundleName": "com.example.demo","version": {"code": 1000000,"name": "1.0.0"}},"deviceConfig": {},"module": {"mainAbility": ".MainAbility_entry","deviceType": ["tablet"],"commonEvents": [{"name": ".MainAbility","permission": "ohos.permission.GET_BUNDLE_INFO","data": ["com.example.demo","100"],"events": ["install","update"]}],"abilities": [{"skills": [{"entities": ["entity.system.home"],"actions": ["action.system.home"]}],"orientation": "unspecified","visible": true,"srcPath": "MainAbility_entry","name": ".MainAbility_entry","srcLanguage": "ets","icon": "$media:icon",// $string:MainAbility_entry_desc为资源索引"description": "$string:MainAbility_entry_desc","formsEnabled": false,// $string:MainAbility_entry_label为资源索引"label": "$string:MainAbility_entry_label","type": "page","launchType": "standard"}],"distro": {"moduleType": "entry","installationFree": false,"deliveryWithInstall": true,"moduleName": "myapplication"},"package": "com.example.myapplication","srcPath": "","name": ".myapplication","js": [{"mode": {"syntax": "ets","type": "pageAbility"},"pages": ["pages/index"],"name": ".MainAbility_entry","window": {"designWidth": 720,"autoDesignWidth": false}}]}
}
五、资源分类与访问
应用开发中使用的各类资源文件,需要放入特定子目录中存储管理。资源目录的示例如下所示,base目录、限定词目录、rawfile目录称为资源目录,element、media、profile称为资源组目录。
说明:
stage模型多工程情况下,共有的资源文件放到AppScope下的resources目录。
分类
- 应用资源:借助资源文件能力,开发者在应用中自定义资源,自行管理这些资源在不同的设备或配置中的表现。
- 系统资源:开发者直接使用系统预置的资源定义(即分层参数,同一资源ID在设备类型、深浅色等不同配置下有不同的取值)。