HarmonyOS Developer DevEco Studio使用指南-工程管理
工程模板和开发语言介绍
DevEco Studio支持包括手机、平板、车机、智慧屏、智能穿戴、轻量级智能穿戴和智慧视觉设备的HarmonyOS应用/服务开发,预置了工程模板,可以根据工程向导轻松创建适应于各类设备的工程,并自动生成对应的代码和资源模板。同时,DevEco Studio还提供了多种编程语言供开发者进行HarmonyOS应用/服务开发,包括ArkTS、JS、Java和C/C++。
工程模板支持的开发语言、API版本、设备类型,如下表所示:
模板名称 | 支持的开发语言 | 支持的API版本 | 支持的设备 | 说明 |
Empty Ability | JS | 4、5、6 | Phone、Tablet、TV、Wearable | 用于设备的Feature Ability模板,展示了基础的Hello World功能。 |
7、8、9 | Phone | |||
ArkTS | 7、8、9 | Phone | ||
Java | 4、5、6 | Phone、Tablet、TV、Wearable、Car | ||
7 | Phone | |||
Native C++ | Java | 4、5、6 | Phone、Car | 用于Phone、Car设备的Feature Ability模板,作为HarmonyOS应用/服务调用C++代码的示例工程,界面显示“Hello World”。 |
7 | Phone | |||
JS | 8、9 | Phone | ||
ArkTS | 8、9 | Phone | ||
[Lite]Empty Ability | JS | 4、5、6 | Lite Wearable、Smart Vision、Router | 用于Lite Wearable、Smart Vision、Router设备的Feature Ability模板,包含一个简单的Hello World文本。该模板包含两个组件:div和text,同时演示了数据绑定的使用方式。使用该模板时,不能同时选择多个设备,即不能创建跨设备工程。 |
7 | Lite Wearable | |||
About Ability | ArkTS | 8、9 | Phone | 用于Phone设备的模板,可以快速创建应用的关于页面。模板的上方通过基础组件Image、Text展示了应用的基本信息,点击中间的List组件可以打开详情页,下方使用Web组件加载了用户协议和隐私声明的Html文件。开发者可以在模板的基础上,补充List内容,替换相关显示信息。 |
Business Card Ability | ArkTS | 8、9 | Phone | 用于Phone设备的模板,可以快速创建应用的名片页面。模板底部通过Tab组件实现不同名片的切换,中间的详情List组件使用了不同的Widget,如Information图标、Switch开关、右侧箭头图标等。开发者可以根据需要替换用户名称和List组件内容。 |
Category Ability | ArkTS | 8、9 | Phone | 用于Phone设备的模板,可以快速创建应用的分类展示页面。模板上方是Navigation组件和search组件,下方是Tab组件。中间的List组件有联动,点击左边List的分类项,右边List会滑动到对应位置,反之亦然。开发者可以根据需要替换相关内容。 |
Category List Ability | ArkTS | 8、9 | Phone | 用于Phone设备的模板,可以快速创建应用的卡片型设置页面。模板上方是Navigation组件和search组件,中间的List组件参考Settings的界面风格,由子标题加List卡片组成。开发者可以根据需要替换标题和每一个设置项的内容。 |
Grid Ability | ArkTS | 8、9 | Phone | 用于Phone设备的模板,可以快速创建应用的网格布局页面。模板上方是Navigation组件,中间分割成两个大小不同的Grid组件,每个Grid组件的Item等比例显示。开发者可以通过模板学习Grid组件的使用方式。 |
List Ability | ArkTS | 8、9 | Phone | 用于Phone设备的模板,可以快速创建应用的列表页面。模板上方是Navigation组件和search组件,下方是Tab组件。中间的List组件使用了双行布局,点击打开详情页。开发者可以根据需要替换双行列表和辅助文本内容。 |
Login Ability | ArkTS | 8、9 | Phone | 用于Phone设备的模板,可以快速创建应用的登录页面。用户输入账号和密码之后,才能点击登录按钮。点击登录、注册和遇到问题分别会跳转到示例页面。模板底部使用Web组件加载了隐私声明的Html文件。开发者可以补充账号密码的存储逻辑,完善登录功能。 |
Splash Screen Ability | ArkTS | 8、9 | Phone | 用于Phone设备的模板,可以快速创建应用的启动过程页面。模板右上角显示倒计时图标,点击跳过按钮或者等倒计时结束都会进入应用主界面,下方提供了应用的版权信息。开发者可以设置倒计时时间,根据需要整体替换广告背景。 |
Empty Ability with CloudDev | ArkTS | 9 | Phone | 端云一体化开发通用模板。更多信息请参见端云一体化开发。 |
创建一个新的工程
当您开始开发一个HarmonyOS应用/服务时,首先需要根据工程创建向导,创建一个新的工程,工具会自动生成对应的代码和资源模板。
说明
在运行DevEco Studio工程时,建议每一个运行窗口有2GB以上的可用内存空间。
创建和配置新工程
DevEco Studio提供了基础的工程模板资源,不同模板支持的设备类型、API Version可能不同,在创建新工程前,请提前了解各模板的相关信息,具体请参考工程模板和开发语言介绍。
- 通过如下两种方式,打开工程创建向导界面。
- 如果当前未打开任何工程,可以在DevEco Studio的欢迎页,选择Create Project开始创建一个新工程。
- 如果已经打开了工程,可以在菜单栏选择File > New > Create Project来创建一个新工程。
- 根据工程创建向导,在HarmonyOS页签,选择需要的Ability工程模板,然后单击Next。
- 在工程配置页面,需要根据向导配置工程的基本信息。
- Project name:工程的名称,可以自定义,由大小写字母、数据和下划线组成。
- Project type:工程的类型,标识该工程是一个传统方式的需要安装的应用(Application,简称应用),或原子化服务(Atomic service,简称服务)。当前3.1.0(API 9)不支持原子化服务开发。
说明
如果是创建的原子化服务,则:
- 原子化服务调试、运行时,在设备桌面上没有应用图标,请使用DevEco Studio的调试和运行功能,来启动原子化服务。
- 原子化服务是免安装的,config.json中自动添加installationFree字段,取值为“true”。
- 如果entry模块的installationFree字段为“true”,则其相关的所有hap模块的installationFree字段都默认为“true”;如果entry模块的installationFree字段为“false”,则其相关的所有hap模块可以配置为“true”或“false”。
- 编译构建APP时,每个HAP大小不能超过10MB。
- Bundle name:标识应用的包名,用于标识应用的唯一性。如果“Project type”选择了Atomic service,则Bundle name的后缀名必须是.hmservice。
- Save location:工程文件本地存储路径,由大小写字母、数字和下划线等组成,不能包含中文字符。
- Compile SDK:应用/服务的目标API Version,在编译构建时,DevEco Studio会根据指定的Compile API版本进行编译打包。
- Model:应用支持的模式,API Version 4~8只支持FA模式。
- Enable Super Visual:支持低代码开发模式,部分模板支持低代码开发,可选择打开该开关。
- Language:开发语言。
- Compatible SDK:兼容的最低API Version。
- Device type:该工程模板支持的设备类型。
- Show in service center:是否在服务中心展示。如果Project type为Atomic service,则会同步创建一个2*2宫格的服务卡片模板,同时还会创建入口卡片;如果Project type为Application,则只会创建一个2*2宫格的服务卡片模板。具体请参考创建服务卡片。当前3.1.0(API 9)不支持服务卡片开发。
- 单击Finish,工具会自动生成示例代码和相关资源,等待工程创建完成。
导入Sample工程
DevEco Studio支持Sample工程的导入功能,通过对接Gitee开源社区中的Sample资源,可一键导入Sample工程到DevEco Studio中。
下面介绍导入HarmonyOS Sample的方法。
- 在DevEco Studio的欢迎页,进入Configure > Settings > Version Control > Git界面,单击Test按钮检测是否安装Git工具。
说明
在打开工程的情况下,可以单击File > Settings进入设置界面。
- 已安装,请根据2开始导入Sample。
- 未安装,请单击Download and Install,DevEco Studio会自动下载并安装。安装完成后,请根据2开始导入Sample。
- 在DevEco Studio的欢迎页,单击Import Sample按钮,导入Sample工程。
说明
在打开工程的情况下,可以单击File > New >Import >Import Sample来进行导入。
- 在HarmonyOS Samples下选择需要导入的Sample工程,然后单击Next。
- 设置Project name和Project location,然后单击Finish,等待Sample工程导入完成。
- 导入Sample后,等待工程同步完成即可。
说明
如果网络受限,导入时会提示“Failed to connect to gitee.com port 443: Time out”连接超时错误,请配置Git代理信息。
添加/删除Module
Module是HarmonyOS应用/服务的基本功能单元,包含了源代码、资源文件、第三方库及应用/服务配置文件,每一个Module都可以独立进行编译和运行。一个HarmonyOS应用/服务通常会包含一个或多个Module,因此,可以在工程中创建多个Module,每个Module分为Ability和Library两种类型。
如HarmonyOS工程介绍,在一个APP中,对于同一类型设备可以包含一个或多个Entry Module。如果同一类型设备存在多个Entry Module,开发者还需要配置不同的Entry模块的分发规则,具体请参考配置distroFilter分发规则。
在工程中添加Module
创建新的Module
- 通过如下两种方法,在工程中添加新的Module。
- 方法1:鼠标移到工程目录顶部,单击鼠标右键,选择New > Module...,开始创建新的Module。
- 方法2:选中工程目录中任意文件,然后在菜单栏选择File > New > Module...,开始创建新的Module。
- 在New Project Module界面中,选择需要创建的模板,单击Next。
- 在Module配置页面,设置新增Module的基本信息,然后单击Next。
- Module name:新增模块的名称。
- Module type:仅在Ability模板存在,可以选择Feature和Entry类型。如果同一类型的设备已经存在Entry模块,添加新Module选择Entry类型时,还需要配置distroFilter分发规则。
- Enable Super Visual:是否使用低代码开发方式。
- Language:选择该Module的开发语言。
- Device type:选择模块的设备类型,如果新建模块的Module type为feature,则只能选择该工程原有的设备类型;如果Module type为entry,可以选择该Module支持的其他设备类型。
- Show in service center:是否在服务中心展示,仅在Ability模板存在。如果工程类型为Atomic service,则会同步创建一个2*2宫格的服务卡片模板,同时还会创建入口卡片;如果工程类型为Application,则只会创建一个2*2宫格的服务卡片模板。具体请参考创建服务卡片。
说明
当前3.1.0(API 9)不支持服务卡片开发。
- Enable native:仅Ohos Library模板存在。使用native将创建一个npm共享模块,用于调用C++代码。
- 若该Module的模板类型为Ability,还需要设置新增Ability的Ability name和Visible参数,Visible参数表示该Ability是否可以被其它应用/服务所调用。
- 勾选(true):可以被其它应用/服务调用。
- 不勾选(false):不能被其它应用/服务调用。
- 单击Finish,等待创建完成后,可以在工程目录中查看和编辑新增的Module。
导入Module
HarmonyOS工程支持从其它工程中导入HarmonyOS模块的功能,导入的模块只能是HarmonyOS工程中的模块。当前仅支持FA模型的模块导入到FA模型,Stage模型的模块导入到Stage模型,不支持FA模型的模块导入到Stage模型或Stage模型的模块导入到FA模型。
- 在主菜单栏单击File > New >Import... >Import Module。
- 选择导入的模块时。其中SDK 4-7的工程既可以选择模块也可以选择工程,而SDK 8-9的工程只可以选择模块。下面以SDK 8-9的工程为例介绍导入模块的具体操作。
在指定路径下,选择导入的模块,单击OK。导入的模块可以为文件夹,也可以为zip格式。
配置distroFilter分发规则
同一类型的设备(Phone、Wearable、Lite Wearable等)可能在系统API版本(apiVersion)、屏幕形状(screenShape)、分辨率(screenWindow)上存在差异。针对这些差异,开发者需要针对同一类型设备的不同型号进行适配开发,然后在应用市场实现精准的分发,以便不同设备的用户能获得更好的使用体验。为了实现应用市场的精准分发,需要在一个工程中,针对同一类型设备添加多个Entry模块来适配不同型号的设备,然后再配置不同的分发规则。
因此,在同一个工程中,如果同一个设备存在多个Entry模块,需要在每一个Entry模块的config.json文件中,配置distroFilter分发规则。distroFilter具体规则如下:
- 通过DeviceType与apiVersion、screenShape、screenWindow的组合唯一确定一个Entry。
- distroFilter中至少包含apiVersion、screenShape、screenWindow中的一个标签。
- 一般情况下,apiVersion标签用于Phone、Tablet、TV、Wearable、Car和Lite Wearable的设备中;screenShape和screenWindow标签用于Lite Wearable设备中。
- 如果一个Entry模块中配置了apiVersion、screenShape、screenWindow中的任意一个或多个标签,则其他的Entry模块也必须包含相同的标签。
- apiVersion、screenShape、screenWindow标签的配置格式如下。其中,policy取值为include时,表示设备满足value取值时,应用市场向该设备进行分发;policy取值为exclude时,表示除了value的取值外,其它合法的取值,应用市场都会向设备进行分发。
说明
screenWindow标签的policy取值只能为include。
"module": {
...
"distroFilter": {
"标签名字": {
"policy": "include|exclude"
"value": [ a, b, c]
}
}
}
删除Module
在工程目录中选中要删除的模块,单击鼠标右键,选中Delete,并在弹出的对话框中单击Delete。