开发工具
鸿蒙的主开发 IDE 为 DevEco-Studio(DevelopEcology Studio,生态开发 Studio),和 Android Studio 一样,基于 IntelliJ 平台做的自定义 IDE。因此,对于 Java 开发者而言,DevEco 只是“在熟悉中带有一点点陌生”。
- 安装 Node.js
在安装好 DevEco 之后,首次点开需要开发者设置 Node.js 环境,并且有版本要求:
Node.js version: even-
numbered version marked LTS, in the v14.19.1 to v16 range npm version: 6.14.16 or later
下载时需要注意选择 Node 长期维护的版本并且使用较新的版本安装包(可以选择使用自装包也可以通过 IDE 下载。有坑,见问题一)。
- ohpm
ohpm(OpenHarmony Package Manager,亦称 ohsdkmgr),是鸿蒙系统的包管理工具(类似于 Android SDK Package Manager),支持查看、安装和卸载 SDK 组件,SDK 组件包括 API 和工具链,也需要独立安装。这里推荐直接在 DevEco IDE 中安装,能省事不少。
- HarmonyOS SDK
和 Android SDK 相同,除了 Manager 工具之外,还需要下载鸿蒙系统用于开发的各个系统版本的 SDK APIs 和工具,也推荐直接在 DevEco IDE 中傻瓜式安装。从 SDK 大小看,275.93MB 中规中矩,大概是刚起步的原因,内容并不多。SDK 中包含了如下内容(Mac 中的下载路径:/Users/xxxx/Library/Huawei/Sdk):
3.1.0(API 9)
Previewer 3.2.3.6 75.00 MB
Toolchains 3.2.3.6 21.99 MB
OpenHarmony(API 9)
ArkTS 3.2.12.5 46.87 MB
JS 3.2.12.5 21.92 MB
Previewer 3.2.12.5 97.52 MB
Toolchains 3.2.12.5 12.64 MB
截止当前,SDK 提供的最高版本是 3.1.0 API 9(鸿蒙 4.0+ 的系统需要额外的企业账号授权才能体验),里面包含了两部分:Harmony SDK 和 OpenHarmony SDK。
HarmonyOS SDK VS OpenHarmony SDK
大家看到这里应该会有一个疑惑,HarmonyOS 和
OpenHarmony 是两个概念,有什么区别? 首先 OpenHarmony 是一个开源项目,有开放原子开源基金会(OpenAtom
Foundation)孵化和运营。相当于 Android 的 AOSP,但不支持 Java 开发应用,不支持模拟器运行。 而
HarmonyOS 是在开源基础上,实现现有 Android 生态应用在部分搭载该 HarmonyOS
设备上运行(可以理解为鸿蒙过渡阶段,中间态)。既然如此,那么在开发语言支持方面,自然是支持 Java/C/C++ 的。
同时,值得开发者注意的是,OpenHarmony 和 HarmonyOS 的 API
略有差别,且打包签名的方式也不同,代码层面上的不同在后面「编码篇」我们在详细展开。
这里对不熟悉 ArkTS 的同学在简单解释下概念,ArkTS 是一个 TS 应用开发框架,支持 Node.js 和 WebAssembly(能力可扩展到 C/C++ 领域),所以它支持多种编程语言实现,ArkTS 涉及了多组件,如编译器 TS 前端、TS 后端、TS 运行时、TS 调试器等。其中,ArkTS Runtime 是 OpenHarmony 上 TS 应用使用的运行时,包含了 TS 对象的分配器以及垃圾回收器、符合 ECMAScript 规范的标准库、用于运行 Ark 前端组件生成的「方舟」字节码(ArkBytecode)的解释器、用于存储隐藏类的内联缓存、对外的函数接口(AFFI)等模块。
ArkTS 就可以理解为是 TypeScript 语言基础上的一个框架,该框架匹配了 ArkUI 框架,扩展了声明式 UI、状态管理等相应的能力,让开发者可以以更简洁、更自然的方式开发跨端应用。
ArkTS、TypeScrip t和 JavaScript 之间的关系: JavaScript 是一种属于网络的高级脚本语言,已经被广泛用于
Web 应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。 TypeScript 是 JavaScript
的一个超集,它扩展了 JavaScript 的语法,通过在 JavaScript 的基础上添加静态类型定义构建而成,是一个开源的编程语言。
ArkTS 兼容 TypeScript 语言,拓展了声明式 UI、状态管理、并发任务等能力。