#过年不停更#鸿蒙应用的那些基础知识 原创
春节不停更,此文正在参加「星光计划-春节更帖活动」
@toc
什么是鸿蒙应用
用户应用程序泛指运行在设备的操作系统之上,为用户提供特定服务的程序,简称“应用”,简称APP。
在 HarmonyOS 上运行的应用,有两种形态:
- 传统方式的需要安装的应用。
- 提供特定功能,免安装的应用(即原子化服务)。
鸿蒙应用的形式
鸿蒙应用软件包以 APP Pack(Application Package)形式发布,它是由一个或多个 HAP(HarmonyOS Ability Package)以及描述每个 HAP 属性的 pack.info
组成。HAP 是 [Ability]的部署包,HarmonyOS 应用代码围绕 Ability 组件展开。
类似于常见的 Web 应用,HAP 也由代码、资源、第三方库以及应用配置文件组成。
HAP 又可以分为 entry 和 feature 两种模块类型:
- entry:应用的主模块。一个 APP 中,对于同一设备类型必须有且只有一个 entry 类型的 HAP,可独立安装运行。
- feature:应用的动态特性模块。一个 APP 可以包含一个或多个 feature 类型的 HAP,也可以不含。只有包含 Ability 的 HAP 才能够独立运行。
Ability
Ability(能力,可以是界面能力,也可以是服务能力),是应用软件的基础单位。应用所具备的能力的抽象,一个应用可以具备多种能力,即可以包含多个 Ability,鸿蒙HarmonyOS支持应用以Ability为单位进行部署。
库文件
库文件是应用依赖的第三方代码(例如so、jar、bin、har等二进制文件),存放在libs目录。
资源文件
资源文件很好理解:字符串、图片、图标、音频等。位置存放于resources目录下。
resources
|---base // 默认存在的目录
| |---element
| | |---string.json
| |---media
| | |---icon.png
|---en_GB-vertical-car-mdpi // 限定词目录示例,需要开发者自行创建
| |---element
| | |---string.json
| |---media
| | |---icon.png
|---rawfile // 默认存在的目录
详情看资源文件的分类与使用
配置文件
其他开发中,配置文件格式可以是 XML 或 JSON 格式,鸿蒙应用也是采用 JSON 格式,配置文件为 config.json
。 配置文件是应用的 Ability 信息,用于声明应用的 Ability ,以及应用所需权限等信息。
应用的每个 HAP 的根目录下都存在一个“config.json”配置文件,主要涵盖以下三个方面:
- 应用的全局配置信息,包含应用的包名、生产厂商、版本号等基本信息。
- 应用在具体设备上的配置信息。
- HAP 包的配置信息,包含每个 Ability 必须定义的基本属性(如包名、类名、类型以及 Ability 提供的能力),以及应用访问系统或其他应用受保护部分所需的权限等。
这是上一篇文章中 HelloWorld 程序中的 config.json
文件:
{
"app": {
"bundleName": "com.example.helloworld",
"vendor": "example",
"version": {
"code": 1000000,
"name": "1.0.0"
}
},
"deviceConfig": {},
"module": {
"package": "com.example.helloworld",
"name": ".MyApplication",
"mainAbility": "com.example.helloworld.MainAbility",
"deviceType": [
"phone"
],
"distro": {
"deliveryWithInstall": true,
"moduleName": "entry",
"moduleType": "entry",
"installationFree": false
},
"abilities": [
{
"skills": [
{
"entities": [
"entity.system.home"
],
"actions": [
"action.system.home"
]
}
],
"orientation": "unspecified",
"name": "com.example.helloworld.MainAbility",
"icon": "$media:icon",
"description": "$string:mainability_description",
"label": "$string:entry_MainAbility",
"type": "page",
"launchType": "standard"
}
]
}
}
配置文件的解释建议看:配置文件的元素
pack.info
描述应用软件包中每个 HAP 的属性,由 IDE 编译生成,应用市场根据该文件进行拆包和 HAP 的分类存储。HAP 的具体属性包括:
- delivery-with-install: 表示该 HAP 是否支持随应用安装。“true” 表示支持随应用安装;“false” 表示不支持随应用安装。
- name:HAP 文件名。
- module-type:模块类型,entry 或 feature 。
- device-type:表示支持该 HA P运行的设备类型。
HAR
HAR(HarmonyOS Ability Resources)可以提供构建应用所需的所有内容,包括源代码、资源文件和 config.json
文件。HAR 不同于 HAP ,HAR 不能独立安装运行在设备上,只能作为应用模块的依赖项被引用。
HelloWorld 项目整体结构
- 打开 HelloWorld 项目后,在 Project 左边栏中预览项目结构如图:
我们能看到 entry 目录,这个目录其实就是一个应用的 HAP 包,类型为 entry 类型。
- 接着我们在 src/main/java 下能看到以包名命名的文件夹:这里存放的就是我们的 Java 代码。此处的代码可以用来创建布局、动态调整布局以及为交互提供支撑服务。
- 和 java 文件夹同级别的 resources 目录下分布着应用资源,该目录的 base 目录下,按资源分类又有着多个文件夹资源。
- element: 表示元素资源,放着 json 格式的文件,主要用来表示字符串、颜色值、布尔值,可以被其他地方引用。
- graphic:可绘制资源,用 xml 文件来表示,例如项目中的圆角按钮、按钮颜色。
- layout:布局资源,例如页面的布局资源
- media:媒体资源,包括图片、音视频等非文本格式的文件
config.json
:配置文件
与 main 目录平级的 test 目录是测试目录,可以用于对自己写的功能进行单元测试,确保代码的正确性。
与 src 平级的 libs 目录用来存储或引用第三方包,例如 jar 包、so 包等。
和 entry 目录平级的 build 目录则用来存放最终编译后的包,也就是 HAP 包。
总结
本文通过上文的 HelloWorld 应用简单解释了一个鸿蒙应用包含的文件、项目结构、以及各个模块的功能,这里只是简单列出部分知识,更多内容读者建议参考官方文档学习和了解。
只有对一个项目结构熟悉了,才能知道作为开发者代码该写在哪个位置,不是吗?
赶紧学起来吧。下一篇文章见!