DevEco Studio下载
开放版本
目前官网对外提供的开发版本是 DevEco Studio 3.1.1 Release
当然也可以体验一下 DevEco Studio 4.0
DevEco Studio语言版本支持
| <=API7 | API8 | API9>= |
|---|---|---|
| Java、ArkT、JS | ArkTS、JS | ArkTS、JS |
sdk下载
DevEco Studio 4.0 支持 API10
安装DevEco Studio, 找到SDK Manager点进去,会进入sdk下面页面,其中包括HarmonyOS以及OpenHarmony的sdk下载
创建Hello Word
做过Android开发的应该很熟悉,和创建Android项目差不多。
Stage模型应用组件简介
基本概念
官方提出了两种模型:
- FA(Feature Ability)模型:HarmonyOS早期版本开始支持的模型,已经不再主推。
- Stage模型:HarmonyOS 3.1 Developer Preview版本开始新增的模型,是目前主推且会长期演进的模型。在该模型中,由于提供了AbilityStage、WindowStage等类作为应用组件和Window窗口的“舞台”,因此称这种应用模型为Stage模型
官网对Stage模型应用的基本概念图
UIAbility
UIAbility组件是一种包含UI界面的应用组件,主要用于和用户交互。它系统调度的基本单元,为应用提供绘制界面的窗口;一个UIAbility组件中可以通过多个页面来实现一个功能模块。每一个UIAbility组件实例,都对应于一个最近任务列表中的任务。 (〃 ̄︶ ̄)和Android的Activity很像。
声明配置
{
"module": {
"name": "entry",
"type": "entry",
"description": "$string:module_desc",
"mainElement": "EntryAbility",
"deviceTypes": [
"default",
"tablet"
],
"deliveryWithInstall": true,
"installationFree": false,
"pages": "$profile:main_pages",
"abilities": [
{
"name": "EntryAbility",
"srcEntry": "./ets/entryability/EntryAbility.ets",
"description": "$string:EntryAbility_desc",
"icon": "$media:icon",
"label": "$string:EntryAbility_label",
"startWindowIcon": "$media:startIcon",
"startWindowBackground": "$color:start_window_background",
"exported": true,
"skills": [
{
"entities": [
"entity.system.home"
],
"actions": [
"action.system.home"
]
}
]
}
]
}
}
当我们创建一个新的项目时,会生成一个主Module(一般是entry),我们首先看一下entry模块的配置文件module.json5
module节点:主要是对当前module的配置信息
- type: 标识当前Module的类型。类型有四种,分别:
- entry:应用的主模块。
- feature:应用的动态特性模块。
- har:静态共享包模块。
- shared:动态共享包模块。
- mainElement: 标识当前Module的入口UIAbility名称或者ExtensionAbility名称。
- deviceTypes: 标识可以在那些设备上运行。
- pages: 标识当前Module的profile资源,用于列举每个页面信息。
- profile资源文件是在resources/base/profile
{
"src": [
"pages/Index",
"pages/Main"
]
}
- abilities节点:标识当前Module中UIAbility的配置信息,标签值为数组类型 (这个节点类似于AndroidMainfest中activity标签)
- srcEntry: 该标签标识入口UIAbility的代码路径
- launchType: 标识当前UIAbility组件的启动模式,可选标签值:
- multiton:多实例模式,每次启动创建一个新的实例。
- singleton:单实例模式,仅第一次启动创建新实例。
- specified:指定实例模式,运行时由开发者决定是否创建新实例
- skills: 标识当前UIAbility组件或ExtensionAbility组件能够接收的Want的特征集,类似于activity标签下的action,配置规则:
- 对于Entry类型的HAP,应用可以配置多个具有入口能力的skills标签(即配置了ohos.want.action.home和entity.system.home)。
- 对于Feature类型的HAP,只有应用可以配置具有入口能力的skills标签,服务不允许配置。
在module 和 abilities下还有很多其他配置。module.json5配置文件
生命周期
graph TD
subgraph Create
end
subgraph Foreground
end
subgraph Background
end
subgraph Destroy
end
Create --> Foreground
Foreground --> Background
Background --> Foreground
Background --> Destroy
- Create状态:当UIAbility被创建时会触发这个生命周期,回调Create方法。
- Foreground和Background状态:顾名思义就是UIAbility切换前后台的一种状态。
- Destroy状态:UIAbility销毁状态。例如调用terminateSelf()方法停止当前UIAbility实例。
- 在Create和Foreground以及Background和Destroy还分别会有两个window状态:WindowStageCreate和WindowStageDestroy
- WindowStageCreate是在UIAibility创建完成,Foreground调用之前触发的,主要用来UI加载。这里可以通过windstate的loadContent方法加载我们的pages
- WindowStageDestroy是UIAibility销毁之前触发的方法。主要用于销毁UI。
WindowStageCreate和WindowStageDestroy状态图