OpenHarmony 简介
ArkUI 开发框架
OpenHarmony 提供了一套UI开发框架,即方舟开发框架(ArkUI 框架)。
两种开发范式
支持两种开发范式,分别是基于ArkTS的声明式开发范式(简称"声明式开发范式")和兼容JS的类Web开发范式(简称"类Web开发范式")。
开发范式名称 | 语言生态 | UI更新方式 | 适用场景 | 适用人群 |
---|---|---|---|---|
声明式开发范式 | ArkTS语言 | 数据驱动更新 | 复杂度较大、团队合作度较高的程序 | 移动系统应用开发人员、系统应用开发人员 |
类Web开发范式 | JS语言 | 数据驱动更新 | 界面较为简单的程序应用和卡片 | Web前端开发人员 |
两种应用模型
OpenHarmony 先后提供了两种应用模型:
- Stage模型: OpenHarmony API 9 开始新增的模型,是目前主推且会长期演进的模型。
- FA(Feature Ability)模型: OpenHarmony API 7 开始支持的模型,已经不再主推。
写一个 Hello World 并在华为手机上跑起来
安装 DevEco Studio
安装最新版 DevEco Studio

构建第一个ArkTS应用(Stage模型)
ArkTS工程目录结构(Stage模型)


-
AppScope > app.json5:应用的全局配置信息。
-
entry:OpenHarmony工程模块,编译构建生成一个HAP包。
- src > main > ets:用于存放ArkTS源码。
- src > main > ets > entryability:应用/服务的入口。
- 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_modules:用于存放三方库依赖信息。
-
build-profile.json5:应用级配置信息,包括签名signingConfigs、产品配置products等。
-
hvigorfile.ts:应用级编译构建任务脚本。
值得一提,DevEco IDE 依赖 Node.js 和 pnpm,我创建项目使用的版本是 node-16.20.1,pnpm 用于安装 npm 依赖。


构建页面
右键点击"pages "文件夹,选择"New > ArkTS File "。打开"entry > src > main > resources > base > profile",在main_pages.json文件中的"src"下配置页面路由"pages/Xxx"。
也可以在右键点击"pages "文件夹时,选择"New > Page",则无需手动配置相关页面路由。

实现页面间的跳转
页面间的导航可以通过页面路由router来实现。使用页面路由请导入router模块。如果需要实现更好的转场动效等,推荐使用 Navigation 。
使用真机运行应用
OpenHarmony 应用可以打包成 hap 安装包,但打包了也没用,因为 hap 不支持侧载,在 HarmonyOS 手机上也无法直接安装 hap 包,除非上了应用市场。OpenHarmony 设备(特殊开发板)则可以直接安装。
开发者可以通过 IDE 安装到手机上,首先要生成签名。
点击 File > Project Structure... > Project > SigningConfigs 界面勾选 "Automatically generate signature " 和 "Support HarmonyOS",并登录华为账号,等待自动签名完成即可。

接下来,HarmonyOS 手机开启开发者模式,连接电脑,选择文件传输模式,并打开 USB 调试,IDE 上就能看到设备了(我的是老古董 HUAWEI Mate 30 Pro),点击运行,手机上就能看到页面了。


手机上也多了一个应用图标

大功告成,把 HarmonyOS 原生应用装到了手机上。
过程中还是遇到了一些坑,记录一下:
Failure[INSTALL_PARSE_FAILED_USESDK_ERROR]
这是因为 DevEco Studio 使用的 SDK 版本与手机 HarmonyOS 的 SDK 版本不匹配,我的手机 HarmonyOS 4 对应 API 9,但创建项目我选了 API 10,改为用 API 9 创建项目就没问题了,目前还没有真机(华为手机)支持 API 10,OpenHarmony 开发板才可以。
Failure[MSG_ERR_INSTALL_FAILED_VERIFY_APP_PKCS7_FAIL]
签名时需要勾选 "Support HarmonyOS",并登录华为账号。
为了能让大家更好的学习鸿蒙 (Harmony OS) 开发技术,这边特意整理了《鸿蒙 (Harmony OS)开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05
《鸿蒙 (Harmony OS)开发学习手册》
- 应用开发导读(ArkTS)
- 应用开发导读(Java)

HarmonyOS 概念:https://qr21.cn/FV7h05
- 系统定义
- 技术架构
- 技术特性
- 系统安全

如何快速入门:https://qr21.cn/FV7h05
- 基本概念
- 构建第一个ArkTS应用
- 构建第一个JS应用
- ......

开发基础知识:https://qr21.cn/FV7h05
- 应用基础知识
- 配置文件
- 应用数据管理
- 应用安全管理
- 应用隐私保护
- 三方应用调用管控机制
- 资源分类与访问
- 学习ArkTS语言
- ......

基于ArkTS 开发:https://qr21.cn/FV7h05
- Ability开发
- UI开发
- 公共事件与通知
- 窗口管理
- 媒体
- 安全
- 网络与链接
- 电话服务
- 数据管理
- 后台任务(Background Task)管理
- 设备管理
- 设备使用信息统计
- DFX
- 国际化开发
- 折叠屏系列
- ......
