鸿蒙系统应用开发 学习日记(一)

系列文章目录

第一章 认识HarmmonyOS

前言

鸿蒙操作系统(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的声明式开发范式的特色。具有开发效率高,开发体验好、性能优越、生态容易快速推进等优点。

后续将继续更新学习笔记

  • 15
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值