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个字节)。
srcEntryability的入口代码门路。
descriptionability的形容信息。
iconability的图标。该标签标识ability图标,标签值为资源文件的索引。该标签可缺省,缺省值为空。如果ability被配置为MainElement,该标签必须配置。
labelability的标签名。
startWindowIcon启动页面的图标。
startWindowBackground启动页面的背景色。
visibleability是否能够被其余应用程序调用,true示意能够被其它利用调用, false示意不能够被其它利用调用。
skills标识可能接管的用意的action值的汇合,取值通常为零碎预约义的action值,也容许自定义。
entities标识可能接管的Want的Action值的汇合,取值通常为零碎预约义的action值,也容许自定义。
actions标识可能接管Want的Entity值的汇合。

3.5 main_pages.json

main_pages.json文件保留的是页面page的门路配置信息,所有须要进行路由跳转的page页面都要在这里进行配置。