HarmonyOS 是一款面向万物互联时代的、全新的分布式操作系统。在传统的单设施零碎能力根底上,HarmonyOS 提出了基于同一套零碎能力、适配多种终端状态的分布式理念,可能反对手机、平板、智能穿戴、智慧屏、车机等多种终端设备,提供全场景(挪动办公、静止衰弱、社交通信、媒体娱乐等)业务能力。
HarmonyOS 提供了反对多种开发语言的 API,供开发者进行利用开发。反对的开发语言包含 Java、XML(Extensible Markup Language)、C/C++、JS(JavaScript)、CSS(Cascading Style Sheets)和 HML(HarmonyOS Markup Language)。
一、环境搭建
依据官网材料介绍,咱们能够在 Windows 零碎或 macOS 零碎上,应用 HUWEI DevEco Studio 进行 HarmonyOS 和 OpenHarmony 的用户应用程序。
首先,到官网下载开发工具 HUAWEI DevEco Studio 和 SDK 下载和降级,抉择本人零碎对应的版本进行下载,如下图所示。
而后,关上安装包进行装置即可。装置完后,当咱们启动 DevEco Studio 工具的时候,零碎提醒咱们须要装置 Node,这是因为 HarmonyOS 应用程序也反对应用 JS 进行开发,咱们只须要依照提醒进行装置即可,如下图。
接下来,就是 SDK 的下载过程,SDK 下载实现之后,就能够进行利用开发工作了。
二、疾速上手
2.1 创立我的项目
首先,咱们关上 DevEco Studio 开发工具创立一个手表利用我的项目。目前,轻量级智能穿戴设施 Lite Wearable 开发均采纳 JS 语言反对 Empty FeatureAbility 和 List Feature Ability 两种开发模板。开发框架以 454px(这里 px 是逻辑像素非物理像素) 为基准宽度。所以,咱们创立一个轻量级智能穿戴设施的工程抉择 Lite Wearable 设施下的 EmptyFeature Ability 模板,如下图。
而后,装置要求填写我的项目名、包名、开发语言等内容,如下图。
配置的详细信息如下:
- Project name:是开发者能够自行设置的项目名称,这里依据本人抉择批改为本人项目名称。
- Bundle name:是包名称,默认状况下利用 ID 也会应用该名称,利用公布时对应的 ID 须要保持一致。
- Save location:为工程保留门路,倡议用户自行设置相应地位。
- Compile SDK:是编译的 API 版本,这里默认抉择 API9。
- Model:抉择 Stage 模型,其余放弃默认即可。
2.2 我的项目构造
ArkTS 工程目录构造
- entry:HarmonyOS 工程模块,编译构建生成一个 HAP 包。
-
- src > main > ets:用于寄存 ArkTS 源码。
- src > main > ets > entryability:利用 / 服务的入口。
- src > main > ets > pages:利用 / 服务蕴含的页面。
- src > main > resources:用于寄存利用 / 服务所用到的资源文件,如图形、多媒体、字符串、布局文件等。对于资源文件的具体阐明请参考资源文件的分类。
- src > main > module.json5:模块配置文件。次要蕴含 HAP 包的配置信息、利用 / 服务在具体设施上的配置信息以及利用 / 服务的全局配置信息。具体的配置文件阐明,详见配置文件阐明(JS/ArkTS)。
- build-profile.json5:以后的模块信息、编译信息配置项,包含 buildOption、targets 配置等。
- hvigorfile.ts:模块级编译构建工作脚本,开发者能够自定义相干工作和代码实现。
- build-profile.json5:利用级配置信息,包含签名、产品配置等。
- hvigorfile.ts:利用级编译构建工作脚本。
JS 工程目录构造
- entry:HarmonyOS 工程模块,编译构建生成一个 HAP 包。
-
- src > main > js:用于寄存 js 源码。
- src > main > js > MainAbility:利用 / 服务的入口。
- src > main > js > MainAbility > i18n:用于配置不同语言场景资源内容,比方利用文本词条、图片门路等资源。
- src > main > js > MainAbility > pages:MainAbility 蕴含的页面。
- src > main > js > MainAbility > app.js:承载 Ability 生命周期。
- src > main > resources:用于寄存利用 / 服务所用到的资源文件,如图形、多媒体、字符串、布局文件等。对于资源文件的具体阐明请参考资源限定与拜访。
- src > main > config.json:模块配置文件。次要蕴含 HAP 包的配置信息、利用 / 服务在具体设施上的配置信息以及利用 / 服务的全局配置信息。具体的配置文件阐明,详见配置文件阐明(JS/ArkTS)。
- build-profile.json5:以后的模块信息、编译信息配置项,包含 buildOption、targets 配置等。
- hvigorfile.ts:模块级编译构建工作脚本,开发者能够自定义相干工作和代码实现。
- build-profile.json5:利用级配置信息,包含签名、产品配置等。
- hvigorfile.ts:利用级编译构建工作脚本。
2.3 运行我的项目
首先,单击顶部工具栏 Tools>Device Manager,而后抉择 Local Emulator,设置适合的 Local Emulator Location 存储地址,而后单击’+New Emulator’,如下图。
抉择 Huawei_Phone 手机模拟器,单击 ’Next’,进入模拟器零碎下载页,下载完后创立一个模拟器,感觉和 Android 是一样的。下载实现后,在 Local Emulator 页面中会呈现创立的手机模拟器,点击 Actions 按钮,就可能启动模拟器。
模拟器启动后,点击上方启动按钮,将 Hello World 工程运行到模拟器上。
那如果要在手表上运行我的项目,须要怎么做呢?首先,咱们须要下载 System-image-wearable 镜像包,而后能力创立手表的模拟器,如下图。
留神,如果最新 3.1 版本不行,能够下载 3.0 版本的。
三、工程详解
接下来,咱们具体的介绍下 Harmony 我的项目的工程构造。
3.1 工程级目录
文件的阐明如下:
- AppScope:寄存利用全局所须要的资源文件。
- entry:利用的主模块,寄存 HarmonyOS 利用的代码、资源等。
- oh_modules:工程的依赖包,寄存工程依赖的源文件。
- build-profile.json5:工程级配置信息,包含签名、产品配置等。
- hvigorfile.ts:工程级编译构建工作脚本,hvigor 是基于工作管理机制实现的一款全新的自动化构建工具,次要提供工作注册编排,工程模型治理、配置管理等外围能力。
- oh-package.json5:工程级依赖配置文件,用于记录引入包的配置信息。
在 AppScope,其中有 resources 文件夹和配置文件 app.json5。AppScope>resources>base 中蕴含 element 和 media 两个文件夹:
- element:寄存公共的字符串、布局文件等资源。
- media:寄存全局公共的多媒体资源文件。
3.2 模块级目录
entry>src 目录中次要蕴含总的 main 文件夹,单元测试目录 ohosTest,以及模块级的配置文件。
- ets:用于寄存 ets 代码,resources 文件寄存模块内的多媒体及布局文件等,module.json5 文件为模块的配置文件。
- ohosTest:单元测试目录。
- build-profile.json5:模块级配置信息,包含编译构建配置项。
- hvigorfile.ts:模块级构建脚本。
- oh-package.json5:模块级依赖配置信息文件。
ets 目录中有 entryability、pages 两个文件夹:
- entryability 寄存 ability 文件,用于以后 ability 应用逻辑和生命周期治理。
- pages 寄存 UI 界面相干代码文件,初始会生成一个 Index 页面。
resources 目录下寄存模块公共的多媒体、字符串及布局文件等资源,别离寄存在 element、media 文件夹中。
3.3 app.json5
AppScope>app.json5 是利用的全局的配置文件,用于寄存利用公共的配置信息。配置信息如下:
- bundleName:包名。
- vendor:应用程序供应商。
- versionCode:用于辨别利用版本。
- versionName:版本号。
- icon:对应于利用的显示图标。
- label:利用名。
3.4 module.json5
module.json5 是模块的配置文件,蕴含以后模块的配置信息。module.json5 默认配置属性及形容如下:
属性 | 形容 |
---|---|
name | 该标签标识以后 module 的名字,module 打包成 hap 后,示意 hap 的名称,标签值采纳字符串示意(最大长度 31 个字节),该名称在整个利用要惟一。 |
type | 示意模块的类型,类型有三种,别离是 entry、feature 和 har。 |
srcEntry | 以后模块的入口文件门路。 |
description | 以后模块的形容信息。 |
mainElement | 该标签标识 hap 的入口 ability 名称或者 extension 名称。只有配置为 mainElement 的 ability 或者 extension 才容许在服务中心露出。 |
deviceTypes | 该标签标识 hap 能够运行在哪类设施上,标签值采纳字符串数组的示意。 |
deliveryWithInstall | 标识以后 Module 是否在用户被动装置的时候装置,示意该 Module 对应的 HAP 是否追随利用一起装置。- true:被动装置时装置。- false:被动装置时不装置。 |
installationFree | 标识以后 Module 是否反对免装置个性。- true:示意反对免装置个性,且合乎免装置束缚。- false:示意不反对免装置个性。 |
pages | 对应的是 main_pages.json 文件,用于配置 ability 中用到的 page 信息。 |
abilities | 是一个数组,寄存以后模块中所有的 ability 元能力的配置信息,其中能够有多个 ability。 |
abilities 中对象的默认配置属性及形容如下表:
属性 | 形容 |
---|---|
name | 该标签标识以后 ability 的逻辑名,该名称在整个利用要惟一,标签值采纳字符串示意(最大长度 127 个字节)。 |
srcEntry | ability 的入口代码门路。 |
description | ability 的形容信息。 |
icon | ability 的图标。该标签标识 ability 图标,标签值为资源文件的索引。该标签可缺省,缺省值为空。如果 ability 被配置为 MainElement,该标签必须配置。 |
label | ability 的标签名。 |
startWindowIcon | 启动页面的图标。 |
startWindowBackground | 启动页面的背景色。 |
visible | ability 是否能够被其余应用程序调用,true 示意能够被其它利用调用,false 示意不能够被其它利用调用。 |
skills | 标识可能接管的用意的 action 值的汇合,取值通常为零碎预约义的 action 值,也容许自定义。 |
entities | 标识可能接管的 Want 的 Action 值的汇合,取值通常为零碎预约义的 action 值,也容许自定义。 |
actions | 标识可能接管 Want 的 Entity 值的汇合。 |
3.5 main_pages.json
main_pages.json 文件保留的是页面 page 的门路配置信息,所有须要进行路由跳转的 page 页面都要在这里进行配置。