什么是HarmonyOS?
HarmonyOS(鸿蒙操作系统)是华为公司开发的一款基于微内核的分布式操作系统。它是一个面向物联网(IoT)时代的全场景操作系统,旨在为各种类型的设备提供统一的操作系统平台和开发框架。HarmonyOS 的目标是实现跨设备的无缝协同和高性能。
DevEco Studio
对标Android Studio,开发鸿蒙OS应用的IDE。
启动页面
Setup
HarmonyOS-SDK:鸿蒙操作系统软件开发工具包
- Previewer:预览器
- Toolchains:工具链
OpenHarmony-SDK:开源鸿蒙操作系统软件开发工具包
- ArkTS:鸿蒙生态的应用开发语言。
- JS:JavaScript
- Previewer:预览器
- Toolchains:工具链
Create Project
配置工程
项目名称、包名、存储路径、编译SDK版本、模型,语言、设备类型等。
工程目录结构
- AppScope:存放应用全局所需要的资源文件。
- entry:应用主模块,存放HarmonyOS应用的代码、资源等。
- on_modules:工程依赖包,存放工程依赖的源文件。
- build-profile.json5是工程级配置信息,包括签名、产品配置等。
- hvigorfile.ts是工程级编译构建任务脚本,hvigor是基于任务管理机制实现的一款全新的自动化构建工具,主要提供任务注册编排,工程模型管理、配置管理等核心能力。
- oh-package.json5是工程级依赖配置文件,用于记录引入包的配置信息。Device Manager
创建好的模拟器会出现在这里。
启动模拟器之后,会在设备列表中出现。
编译运行
编译运行,可以从通知栏看到输出的文件并不是apk,而是hap(Harmony Application Package的缩写)。是鸿蒙操作系统设计的应用程序包格式。
.hap 文件包含了应用程序的代码、资源和元数据等信息,用于在 HarmonyOS 设备上安装和运行应用程序。
整体开发流程跟Android基本无差,所以熟悉Android开发的同学上手基本没啥难度。
ArkTS
ArkTS是鸿蒙生态的应用开发语言。它在保持TypeScript(简称TS)基本语法风格的基础上,对TS的动态类型特性施加更严格的约束,引入静态类型。同时,提供了声明式UI、状态管理等相应的能力,让开发者可以以更简洁、更自然的方式开发高性能应用。 https://developer.harmonyos.com/cn/develop/arkts/
最简单例子:
代码语言:javascript复制@Entry
@Component
struct Index {
@State message: string = 'Hello World'build() {
Row() {
Column() {
Text(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
}
.width('100%')
}
.height('100%')
}
}
看起来非常简洁,采用的是声明式UI,写过Flutter的同学对声明式UI应该不会陌生。从最简单的例子初步了解下基本语法:
- 装饰器,用于装饰类、结构、方法以及变量,并赋予其特殊的含义。如@Entry、@Component、@State都是装饰器。
- 自定义组件:可复用的UI单元,可组合其他组件,如上述被@Component装饰的stuct Index。
- UI 描述:以声明式的方式来描述UI的结构,如上述的build()方法中的代码块。
- 系统组件:ArkUI框架中默认内置的基础和容器组件,可直接被开发者调用,比如示例中的Row、Column、Text。
- 属性方法:组件可以通过链式调用配置多项属性,如fontSize()、width()、height()、backgroundColor()等。
- 事件方法:组件可以通过链式调用设置多个事件的响应逻辑,本例代码不涉及,可以进一步学习文档。
这里就不是Android熟悉的java或kotlin语言了,编程语言变成了类JavaScript的前端语言,这意味着我们需要适应用前端的思想去开发鸿蒙应用,比如状态管理。
总结
本文纯初体验遥遥领先背后的鸿蒙操作系统,基于开发者平台提供的IDE、鸿蒙生态的开发语言ArkTS,通过模拟器运行起来了鸿蒙OS版HelloWorld。对于已经有移动开发经验的同学来说上手可以说非常快,官方文档也非常详尽,ArkTS语法也非常简洁易学,如果大家对华为生态的应用开发感兴趣或者想深入学习借鉴华为做OS和物联网的思路,鸿蒙系统就是一个标杆。
我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!