系列文章目录
文章目录
前言
鸿蒙操作系统(HarmonyOS)是华为公司发布的一款智能终端系统,从HarmonyOS2.0版本发布开始正式覆盖手机等移动终端。随着近期宣布HarmonyOS NEXT版本将不再兼容安卓应用,意味着移动开发行业中将会产生一个继Android App开发、ios App开发后的HarmonyOS App开发岗位。
一、什么是鸿蒙?
鸿蒙是一款面向万物互联时代的、全新的分布式操作系统,能够支持手机、平板、智能穿戴、智慧屏、车机、PC、智能音箱、耳机、AR/VR眼镜等多种终端设备,
鸿蒙提供了用户程序框架、Ability框架以及UI框架,支持应用开发过程中多终端的业务逻辑和界面逻辑进行复用,能够实现应用的一次开发、多端部署,提升了跨设备应用的开发效率。
二、开发工具
工具: DevEco Studio
下载地址:https://developer.huawei.com/consumer/cn/deveco-studio/
历史稳定版本DevEco Studio 3.1.1 Release 下载地址:https://developer.huawei.com/consumer/cn/deveco-studio/archive/
目前华为官网DevEco Studio 5.0版本都属于测试版本,可以根据自己喜好下载安装
三、下载安装
打开安装包文件
勾选创建桌面快捷方式后一直下一步即可
运行 DevEco Studio 安装结束。
HarmonyOS SDK已嵌入DevEco Studio中,无需再额外下载配置。
四、新建应用
通过Create Project构建第一个鸿蒙应用
选择 Empty Ability 创建一个空模板应用
编辑你的项目配置(没有特殊需求的话修改项目名、包名、保存路径即可)
点击finish即可得到第一个鸿蒙应用
五、目录介绍
左边 ArkTest 即项目文件目录
src > main > ets:用于存放ArkTS源码。
src > main > ets > entryability:应用/服务的入口。
src > main > ets > entrybackupability:应用提供扩展的备份恢复能力。
src > main > ets > pages:应用/服务包含的页面。
src > main > resources:用于存放应用/服务所用到的资源文件,如图形、多媒体、字符串、布局文件等。关于资源文件,详见资源分类与访问。
src > main > module.json5:模块配置文件。主要包含HAP包的配置信息、应用/服务在具体设备上的配置信息以及应用/服务的全局配置信息。具体的配置文件说明,详见module.json5配置文件。
build-profile.json5:当前的模块信息 、编译信息配置项,包括buildOption、targets配置等。
hvigorfile.ts:模块级编译构建任务脚本。
obfuscation-rules.txt:混淆规则文件。混淆开启后,在使用Release模式进行编译时,会对代码进行编译、混淆及压缩处理,保护代码资产。详见开启代码混淆。
oh-package.json5:用来描述包名、版本、入口文件(类型声明文件)和依赖项等信息。
oh_modules:用于存放三方库依赖信息。
build-profile.json5:工程级配置信息,包括签名signingConfigs、产品配置products等。其中products中可配置当前运行环境,默认为HarmonyOS。
hvigorfile.ts:工程级编译构建任务脚本。
oh-package.json5:主要用来描述全局配置,如:依赖覆盖(overrides)、依赖关系重写(overrideDependencyMap)和参数化配置(parameterFile)等。
六、UIAbiliy
在src > main > ets > entryability目录下我们发现新建项目后编译器已经自动给我们生成了EntryAbility.ts文件 打开 EntryAbility.ts 文件可以发现 EntryAbility extends UIAbility。
1、UIAbiliy是什么
UIAbility 组件是一种包含UI的应用组件,UIAbility组件是系统应用中调度的基本单元(最小单元),为应用提供绘制界面的窗口,主要用于和用户交互。一个应用可以包含一个或多个UIAbility组件。 简单点形容打开手机最近任务列表窗口
这里的每一个窗口我们可以理解为一个UIAbility。在开发中,如果我们希望在任务视图中看到多个任务,或者需要同时开启多个窗口,就可以创建多个UIAbility。
2、UIAbiliy的配置
因为是编译器帮我们自动创建的EntryAbility.ts类,所以我们可以发现在src > main > module.json5 文件中已经自动帮我们写好了EntryAbility.ts类的名称、入口、标签等相关信息。
所以当我们新建新的UIAbility子类时为使应用能够正常使用我们需要在module.json5配置文件的abilities标签中声明UIAbility子类的相关信息。
3、UIAbiliy的生命周期
在编译器帮我们生成的EntryAbility.ts类中我们可以发现存在onCreate(),onDestroy(),onWindowStageCreate(),onWindowStageDestroy(),onForeground(),onBackground()方法。这些方法即UIAbiliy的生命周期,会在应用的不同状态下触发。
onCreate()
Create状态为在应用加载过程中,UIAbility实例创建完成时触发,系统会调用onCreate()回调。可以在该回调中进行页面初始化操作,例如变量定义资源加载等,用于后续的UI展示。
onWindowStageCreate()与onWindowStageDestroy()
UIAbility实例创建完成之后,在进入Foreground之前,系统会创建一个WindowStage。WindowStage创建完成后会进入onWindowStageCreate()回调,可以在该回调中设置UI加载、设置WindowStage的事件订阅。
在EntryAbility.ts类的onWindowStageCreate()方法中,已经有通过loadContent()方法设置应用要加载的页面的代码。
在UIAbility实例销毁之前,则会先进入onWindowStageDestroy()回调,可以在该回调中释放UI资源。
onForeground()与onBackground()
Foreground和Background状态分别在UIAbility实例切换至前台和切换至后台时触发,对应于onForeground()回调和onBackground()回调。
onForeground()回调,在UIAbility的UI可见之前,如UIAbility切换至前台时触发。可以在onForeground()回调中申请系统需要的资源,或者重新申请在onBackground()中释放的资源。
onBackground()回调,在UIAbility的UI完全不可见之后,如UIAbility切换至后台时候触发。可以在onBackground()回调中释放UI不可见时无用的资源,或者在此回调中执行较为耗时的操作,例如状态保存等。
onDestroy()
Destroy状态在UIAbility实例销毁时触发。可以在onDestroy()回调中进行系统资源的释放、数据的保存等操作。
另外我们需要注意当应用的UIAbility实例已创建,且UIAbility配置为singleton启动模式时,再次调用startAbility()方法启动该UIAbility实例时,只会进入该UIAbility的onNewWant()回调,不会进入其onCreate()和onWindowStageCreate()生命周期回调。
七、ArkUI
在src > main > ets > pages目录下存在一个Index.ets文件,这个是编译器为我们创建的第一个页面,通过点击编译器右侧的Previewer按钮会出现当前页面的内容。
这个就是通过HarmonyOS 推出的方舟开发框架(ArkUI)实现的页面布局。
1、什么是ArkUI
ArkUI 对应的中文名字是方舟开发框架。 ArkUI为HarmonyOS应用的UI开发提供了完整的基础设施,来支持开发者进行可视化界面开发。 包括简洁的UI语法、丰富的UI功能(组件、布局、动画以及交互事件),以及实时界面预览工具等,可以支持开发者进行可视化界面开发。
2、基本概念
UI:即用户界面。开发者可以将应用的用户界面设计为多个功能页面,每个页面进行单独的文件管理,并通过页面路由API完成页面间的调度管理如跳转、回退等操作,以实现应用内的功能解耦,一个应用的用户界面通常会由多个功能页面组成。
组件:UI构建与显示的最小单位,如列表、网格、按钮、单选框、进度条、文本等。开发者通过多种组件的组合,构建出满足自身应用诉求的完整界面,ArkUI提供了系统组件和自定义组件。
3、开发范式
ArkUI提供了两种开发范式 1.声明式开发范式(基于ArkTS的声明式开发范式) 2.类Web开发范式(兼容JS的类Web开发范式)
声明式开发范式:采用基于TypeScript声明式UI语法扩展而来的ArkTS语言,从组件、动画和状态管理三个维度提供UI绘制能力。
类Web开发范式:采用经典的HML、CSS、JavaScript三段式开发方式,即使用HML标签文件搭建布局、使用CSS文件描述样式、使用JavaScript文件处理逻辑。该范式更符合于Web前端开发者的使用习惯,便于快速将已有的Web应用改造成方舟开发框架应用。
HarmonyOS推荐采用声明式开发范式来构建UI
声明开发样式具有以下优点:
开发效率:声明式开发范式更接近自然语义的编程方式,开发者可以直观地描述UI,无需关心如何实现UI绘制和渲染,开发高效简洁。
应用性能:如下图所示,两种开发范式的UI后端引擎和语言运行时是共用的,但是相比类Web开发范式,声明式开发范式无需JS框架进行页面DOM管理,渲染更新链路更为精简,占用内存更少,应用性能更佳。
发展趋势:声明式开发范式后续会作为主推的开发范式持续演进,为开发者提供更丰富、更强大的能力。
4、什么是ArkTS
ArkTS 是UI开发语言,基于TypeScript(简称TS)语言扩展而来,是TS的超集,是HarmonyOS优选的主力应用开发语言。 扩展能力包含各种装饰器、自定义组件、UI描述机制。 状态数据管理是基于ArkTS的声明式开发范式的特色。具有开发效率高,开发体验好、性能优越、生态容易快速推进等优点。
后续将继续更新学习笔记