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页面都要在这里进行配置。