基础知识
# 01-HarmonyOS 认知
- HarmonyOS 是什么
- 是一套分布式系统,可以用在 1 + N + 8 场景
- 特点:
- 一次开发,多次部署
- 一套工程代码,多端按需部署
- 可分可合,自由流转
- 整体解耦拆分成多个服务,也可以多个服务组合成一个app
- 多个设备之间可以接续一个应用,或者多个应用共同协同
- 统一生态,原生智能
- 鸿蒙系统统一的标准,以及内置了各种AI能力供调用
- 一次开发,多次部署
# IDE 介绍
# DevEco Studio IDE []
下载地址: https://developer.huawei.com/consumer/cn/download
- AppScope > app.json5:应用的全局配置信息,详见app.json5配置文件。
- entry:HarmonyOS工程模块,编译构建生成一个HAP包。
- est: 用于存放ArkTS源码
- entryability:应用/服务的入口。
- entrybackupability:应用提供扩展的备份恢复能力。
- pages:应用/服务包含的页面。
- resources:用于存放应用/服务所用到的资源文件,如图形、多媒体、字符串、布局文件等。关于资源文件,详见资源分类与访问。
- module.json5:模块配置文件。主要包含HAP包的配置信息、应用/服务在具体设备上的配置信息以及应用/服务的全局配置信息。具体的配置文件说明,详见module.json5配置文件。
- build-profile.json5:当前的模块信息 、编译信息配置项,包括buildOption、targets配置等。
- hvigorfile.ts:模块级编译构建任务脚本。
- oh-package.json5:用来描述包名、版本、入口文件(类型声明文件)和依赖项等信息。
- est: 用于存放ArkTS源码
- oh_modules:用于存放三方库依赖信息。
- build-profile.json5:工程级配置信息,包括签名signingConfigs、产品配置products等。其中products中可配置当前运行环境,默认为HarmonyOS。
- hvigorfile.ts:工程级编译构建任务脚本。
- oh-package.json5:主要用来描述全局配置,如:依赖覆盖(overrides)、依赖关系重写(overrideDependencyMap)和参数化配置(parameterFile)等。
# 应用程序多Hap机制
- 模块化管理
- 组合部署到不同的设备
- 资源共享,减少包体积
FeatureB.hap: 资源共享,多个hap 使用的资源(公共资源文件,公共页面)放在hap中,其他Hap到该Hap 访问资源和so文件。
# 多HAP 构建视图
# 多HAP开发调试与发布部署流程
# 多HAP运行机制及数据通信方式
- 同一进程内的数据通信:线程间通信
- 跨进程数据通信: 进程间通信
- 多hap 运行在同一进程,通信方式与统一Hap组件通信方式相同
# 共享包
# HAR: 静态共享包
# HSP: 动态共享包: 专门为某一应用开发的HSP,只能被该应用内部其他HAP/HSP 使用,用于应用内部代码、资源共享。应用内HSP跟随其宿主应用的APP包一起发布,与该宿主应用具有相同的包名和生命周期。
# 应用配置文件
# Stage 模型: 存在一个app.json.5 + n个module.json5
app.json5: 应用的全局配置信息,包含应用的报名、开发厂商、版本号等基本信息
module.json5:module的基本配置信息:module 名称,类型,描述,支持的设备类型等基本信息。应用组件信息,包含UIAbility 组件和ExtensionAbility组件的描述信息,权限信息
launchType: 标识当前UIAbility组件的启动模式,可选标签: ‒ multiton:多实例模式 ‒ singleton: 单实例模式(默认) ‒ specified: 指定实例模式,运行时由开发者决定
module.json5 模块配置说明
{
"module": {
//标识当前Module的名称,标签值采用字符串表示(最大长度31个字节),该名称在整个应用要唯一,仅支持英文字符。
"name": "entry",
//标识当前Module的类型。类型有两种,分别:- entry:应用的主模块。feature:应用的动态特性模块。
"type": "entry",
//标识当前Module的描述信息,标签值是字符串类型(最长255字节)或对描述内容的字符串资源索引。
"description": "$string:module_desc",
//标识当前Module的入口UIAbility名称或者
"mainElement": "EntryAbility",
"deviceTypes": [
"tv",
"tablet"
],
/标识当前Module是否在用户主动安装的时候安装,表示该Module对应的HAP是否跟随应用一起安装。
"deliveryWithInstall": true,
// 标识当前Module是否支持免安装特性。
// - true:表示支持免安装特性,且符合免安装约束。
//
// - false:表示不支持免安装特性。
// - 当应用的entry类型Module的该字段配置为true时,该应用的feature类型的该字
"installationFree": false,
//标识当前Module的profile资源,用于列举每个页面信息。 其实就是路由,点进去你会发现是你在此module下配置跳转的路由信息
"pages": "$profile:main_pages",
"virtualMachine": "ark",
}
}