hello鸿蒙

1. 前言

鸿蒙是一款由华为推出的全生态操作系统(探索 | 华为开发者联盟),最近几年发展势头非常强劲,现在开始,让我们来一起认识他吧。

本文针对鸿蒙基本的开发内容做一次概览性的串联。

咱们学习一款新的开发平台,一般先关注两个事情:a)开发工具;b)开发语言。

2. 开发工具与开发语言

2.1 开发工具

鸿蒙的开发工具叫 DevEco Studio,它是基于idea做的定制开发,使用习惯完全继承idea。DevEco开发环境依赖Node.js和Ohpm,如果我们使用的电脑没有配置对应的环境也没关系,我们下载安装DevEco后,首次使用DevEco Studio,工具的配置向导会引导我们下载SDK及工具链

具体的环境配置方法看这里:配置开发环境-快速开始-DevEco Studio使用指南-工具

工具下载地址见这里:https://developer.huawei.com/consumer/cn/deveco-studio

2.2 开发语言

鸿蒙开发语言支持 C/C++、ArkTs、js、Java(从API Version 8开始,不再提供Java语言SDK包)

其中ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,继承了TS的所有特性,是TS的超集。(因此在学习ArkTS语言之前,建议开发者具备TS语言开发能力)

3. 基本概念

3.1 UI框架

鸿蒙提供了一套UI开发框架 —— 方舟开发框架(ArkUI)。方舟开发框架可为开发者提供应用UI开发所必需的能力,比如多种组件、布局计算、动画能力、UI交互、绘制等。

ArkUI针对不同目的和技术背景的开发者提供了两种开发范式,分别是基于ArkTS的声明式开发范式(简称“声明式开发范式”)和兼容JS的类Web开发范式(简称“类Web开发范式”)

  • 声明式开发范式:采用基于TypeScript声明式UI语法扩展而来的ArkTS语言,从组件、动画和状态管理三个维度提供UI绘制能力。

  • 类Web开发范式:采用经典的HML、CSS、JavaScript三段式开发方式,即使用HML标签文件搭建布局、使用CSS文件描述样式、使用JavaScript文件处理逻辑。该范式更符合于Web前端开发者的使用习惯,便于快速将已有的Web应用改造成方舟开发框架应用。

在开发一款新应用时,推荐采用声明式开发范式来构建UI,主要基于以下几点考虑:

  • 开发效率:声明式开发范式更接近自然语义的编程方式,开发者可以直观地描述UI,无需关心如何实现UI绘制和渲染,开发高效简洁。

  • 应用性能:虽然两种开发范式的UI后端引擎和语言运行时是共用的,但是相比类Web开发范式,声明式开发范式无需JS框架进行页面DOM管理,渲染更新链路更为精简,占用内存更少,应用性能更佳。

  • 发展趋势:声明式开发范式后续会作为主推的开发范式持续演进,为开发者提供更丰富、更强大的能力。

以下是两种开发范式的简单对比:

开发范式名称语言生态UI更新方式适用场景适用人群
声明式开发范式ArkTS语言数据驱动更新复杂度较大、团队合作度较高的程序移动系统应用开发人员、系统应用开发人员
类Web开发范式JS语言数据驱动更新界面较为简单的程序应用和卡片Web前端开发人员

下面是一段基于ArcTs声明式开发的UI代码:

// Index.ets@Entry@Componentstruct Index {  @State message: string = 'Hello World'  build() {    Row() {      Column() {        Text(this.message)          .fontSize(50)          .fontWeight(FontWeight.Bold)      }      .width('100%')    }    .height('100%')  }}

3.2 应用模型

应用模型是鸿蒙为开发者提供的应用程序所需能力的抽象提炼,它提供了应用程序必备的组件和运行机制。有了应用模型,开发者可以基于一套统一的模型进行应用开发,使应用开发更简单、高效。

HarmonyOS应用模型的构成要素包括:

  • 应用组件

应用组件是应用的基本组成单位,是应用的运行入口。用户启动、使用和退出应用过程中,应用组件会在不同的状态间切换,这些状态称为应用组件的生命周期。应用组件提供生命周期的回调函数,开发者通过应用组件的生命周期回调感知应用的状态变化。

应用开发者在编写应用时,首先需要编写的就是应用组件,同时还需编写应用组件的生命周期回调函数,并在应用配置文件中配置相关信息。这样,操作系统在运行期间通过配置文件创建应用组件的实例,并调度它的生命周期回调函数,从而执行开发者的代码。

  • 应用进程模型

应用进程模型定义应用进程的创建和销毁方式,以及进程间的通信方式。

  • 应用线程模型

应用线程模型定义应用进程内线程的创建和销毁方式、主线程和UI线程的创建方式、线程间的通信方式。

  • 应用任务管理模型

应用任务管理模型定义任务(Mission)的创建和销毁方式,以及任务与组件间的关系。HarmonyOS应用任务管理由系统应用负责,三方应用无需关注。

  • 应用配置文件

应用配置文件中包含应用配置信息、应用组件信息、权限信息、开发者自定义信息等,这些信息在编译构建、分发和运行阶段分别提供给编译工具、应用市场和操作系统使用。

说回到鸿蒙的应用模型,随着系统的演进发展,鸿蒙先后提供了两种应用模型:

  • FA(Feature Ability)模型: HarmonyOS API 7开始支持的模型,已经不再主推。

  • Stage模型: HarmonyOS API 9开始新增的模型,是目前主推且会长期演进的模型。在该模型中,由于提供了AbilityStage、WindowStage等类作为应用组件和Window窗口的“舞台”,因此称这种应用模型为Stage模型。

Stage模型与FA模型最大的区别在于:Stage模型中,多个应用组件共享同一个ArkTS引擎实例;而FA模型中,每个应用组件独享一个ArkTS引擎实例。因此在Stage模型中,应用组件之间可以方便的共享对象和状态,同时减少复杂应用运行对内存的占用。Stage模型作为主推的应用模型,开发者通过它能够更加便利地开发出分布式场景下的复杂应用。

Stage模型的设计基于如下出发点。

  1. 为复杂应用而设计

    1. 多个应用组件共享同一个ArkTS引擎(运行ArkTS语言的虚拟机)实例,应用组件之间可以方便的共享对象和状态,同时减少复杂应用运行对内存的占用。

    2. 采用面向对象的开发方式,使得复杂应用代码可读性高、易维护性好、可扩展性强。

  2. 支持多设备和多窗口形态

应用组件管理和窗口管理在架构层面解耦:

  • 便于系统对应用组件进行裁剪(无屏设备可裁剪窗口)。

  • 便于系统扩展窗口形态。

  • 在多设备(如桌面设备和移动设备)上,应用组件可使用同一套生命周期。

        3. 平衡应用能力和系统管控成本

Stage模型重新定义应用能力的边界,平衡应用能力和系统管控成本。

  • 提供特定场景(如卡片、输入法)的应用组件,以便满足更多的使用场景。

  • 规范化后台进程管理:为保障用户体验,Stage模型对后台应用进程进行了有序治理,应用程序不能随意驻留在后台,同时应用后台行为受到严格管理,防止恶意应用行为。

接下来,咱们写一个Hello world程序。

4. Hello World(Stage模型)

鸿蒙官方推荐stage模型,作为传统保留项目——hello world,就用stage模型开发一个hello world应用吧。

4.1 工程创建

  1. 若首次打开DevEco Studio,请点击Create Project创建工程。如果已经打开了一个工程,请在菜单栏选择File New Create Project来创建一个新工程。

  2. 选择Application应用开发(本文以应用开发为例,Atomic Service对应为元服务开发),选择模板“Empty Ability”,点击Next进行下一步配置。

图片

  1. 进入配置工程界面,Compile SDK选择“3.1.0(API 9)”,Model 选择“Stage”,其他参数保持默认设置即可。

图片

4. 点击Finish,工具会自动生成示例代码和相关资源,等待工程创建完成。

4.2 工程目录

新建的工程目录结构如下:

  • AppScope > app.json5:应用的全局配置信息。

  • entry:HarmonyOS工程模块,编译构建生成一个HAP包。

    • src > main > ets:用于存放ArkTS源码。

    • src > main > ets > entryability:应用/服务的入口。

    • src > main > ets > pages:应用/服务包含的页面。

    • src > main > resources:用于存放应用/服务所用到的资源文件,如图形、多媒体、字符串、布局文件等。

    • src > main > module.json5:Stage模型模块配置文件。主要包含HAP包的配置信息、应用/服务在具体设备上的配置信息以及应用/服务的全局配置信息。

    • build-profile.json5:当前的模块信息、编译信息配置项,包括buildOption、targets配置等。其中targets中可配置当前运行环境,默认为HarmonyOS。

    • hvigorfile.ts:模块级编译构建任务脚本,开发者可以自定义相关任务和代码实现。

  • oh_modules:用于存放三方库依赖信息。

  • build-profile.json5:应用级配置信息,包括签名、产品配置等。

  • hvigorfile.ts:应用级编译构建任务脚本。

图片

4.3 为默认页面添加一个按钮

  1. 打开主界面的代码

工程同步完成后,在“Project”窗口;

点击“entry > src > main > ets > pages”;

打开“Index.ets”文件,可以看到页面由Text组件组成。

Index.ets”文件的示例如下所示:

// Index.ets@Entry@Componentstruct Index {  @State message: string = 'Hello World'  build() {    Row() {      Column() {        Text(this.message)          .fontSize(50)          .fontWeight(FontWeight.Bold)      }      .width('100%')    }    .height('100%')  }}
预览图如下所示:

图片

添加一个Button

在第1步中13行代码后面新增一个Button按钮,代码如下所示:

// Index.ets@Entry@Componentstruct Index {  @State message: string = 'Hello World'  build() {    Row() {      Column() {        Text(this.message)          .fontSize(50)          .fontWeight(FontWeight.Bold)      }      Button("Hello world")      .width('100%')    }    .height('100%')  }}

预览图如下所示:

图片

4.4 tips

  1. 如何打开预览界面?代码编辑框的右侧“previewer”,示意图如下:

图片

  1. 如何真机调试,详见:在Phone和Tablet中运行应用/服务-使用本地真机运行应用/服务-运行HarmonyOS应用/服务-应用/服务运行-DevEco Studio使用指南-工具

5. 结语

鸿蒙的开发目前主推ArkTs语言,它的开发方式倾向于声明式开发,应用的开发模式与当下的前端MVVM接近,对前端开发者比较友好。

如果你也对鸿蒙开发感兴趣,加入“Harmony自习室”吧

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值