鸿蒙6.0应用开发——一多工程的部署与发布

概述

本章介绍一多应用在工程结构设计及应用上架配置中的方法。在开发“一多”应用时,除了需要针对手机、平板、电脑、智能穿戴、智慧屏等不同设备的硬件特性进行适配外,还需合理组织代码工程,以提升开发效率与部署灵活性。为保障多设备间一致的用户体验,系统提供了相应的配置能力。

说明

本章的内容基于DevEco Studio 6.0.0 Release版本进行介绍,如使用DevEco Studio其它版本,可能存在文档与产品功能界面不一致、操作不一致的情况,请以实际功能界面为准。

创建三层架构工程

建议在应用开发过程中使用架构设计中介绍的“三层架构工程”,在common层存放基础公共代码,features层存放相对独立的功能模块代码,products层存放完全独立的产品代码。通过在products层依赖features和common提供的公共能力,可最大化实现代码复用与职责分离。

“三层架构工程”将项目工程以common、features、products三个层级进行组织,以提升代码复用性与开发效率。工程结构示例如下所示:

/application
 ├── common                  # 公共特性目录
 │
 ├── features                # 功能模块目录
 │   ├── feature1            # 子功能
 │   ├── feature2            # 子功能2
 │   └── ...                 # 子功能n
 │
 └── products                # 产品层目录
     ├── default             # 默认设备泛类目录
     ├── tv                  # 智慧屏泛类目录
     └── wearable            # 智能穿戴泛类目录

建议使用DevEco Studio直接创建出三层架构的新工程。在编译器创建工程弹框中选择Flexible Layout Ability工程模板,该模板可以创建跨设备应用开发的三层工程结构。更多工程模板介绍内容可参考工程模板介绍

在这里插入图片描述

配置工程名称、包名等基本信息,选择目标支持设备,完成设置后即可创建项目。

在这里插入图片描述

创建后的工程目录如下图所示:

  • common层为HAR(Harmony Archive)类型的Module,提供通用组件和工具类等基础能力支撑;
  • features层默认创建两个HAR类型的Module,用于封装独立的功能模块与业务逻辑,提升模块化程度与复用性;
  • products层创建一个entry类型的HAP(Harmony Ability Package)Module,作为应用的主入口模块,承载设备与场景差异化的个性化配置和启动逻辑。

在这里插入图片描述

根据业务需求,应用可以灵活规划新增或删除Module,具体操作步骤可以参考添加/删除模块

说明

在一多应用开发中,可以根据设备类型的设计差异选择是否创建独立HAP包。例如,手机和平板的布局与功能设计类似,可共用一个HAP包;而智慧屏(TV)和智能穿戴设备(Wearable)因与其他设备相比差异较大,建议分别创建独立的HAP包。

修改Module类型及设备类型

修改Module类型

在新增Module时,可选择不同类型的Module进行创建。若需修改已创建Module的类型,只需编辑其module.json5配置文件中的"type"字段即可。"type"支持"entry/feature/har/shared"四个取值,分别表示应用的主模块、动态特性模块、静态共享包模块、动态共享包模块,开发者可参考应用程序包开发与使用,根据具体使用场景来选择或修改Module的类型。

在这里插入图片描述

修改设备类型

在新增Module时,可指定该Module支持运行的设备类型;对于已创建的Module,可通过修改其module.json5配置文件中的"deviceTypes"字段,修改支持运行的设备类型,支持"phone/tablet/2in1/tv/wearable/car",分别对应手机、平板、电脑、智慧屏、智能穿戴、智能座舱设备。修改后需要点击右上角的"Sync Now",否则改动不会生效。

在这里插入图片描述

说明

module.json5配置文件中定义了Module的各项基本配置信息,更多字段的详细说明可参考module.json5配置文件

修改依赖关系

采用架构设计中介绍的“三层架构工程”设计原则,在Module中引用其他Module时,需在其oh-package.json5文件中配置依赖关系。使用Flexible Layout Ability工程模板创建的三层架构,模板会默认配置好依赖关系。若要引入新的依赖关系,修改"dependencies"字段,添加新的依赖关系,格式为:

"依赖名称": "本地相对路径"

配置完成后,在代码中可直接通过该依赖名称使用features或common的功能模块。

修改oh-package.json5文件后,请点击右上角的"Sync Now",否则改动不会生效。更多详情参考引用及管理共享包

在这里插入图片描述

配置增强启动页

启动页(Starting Window)在应用冷启动、进程未就绪或内容未加载完成时显示,是首个呈现给用户的界面。开发一多应用时,多端设备共用一套代码,由于不同设备的断点存在差异,启动页在各端呈现的效果可能有所不同,如下表所示:

在这里插入图片描述

系统提供增强启动页配置能力,旨在保障应用在多端设备上启动页体验的一致性,减少开发者的手动适配工作。开发者可根据设计需求配置启动资源,相应资源也具备根据窗口尺寸进行缩放的能力,更易于多设备适配设计。

增强启动页通过配置json文件的方式实现,json文件需要由开发者自行创建并放置到工程目录下,配置文件中可设置图标、插画、背景颜色、背景图片、品牌标识等多元化元素,有助于提升用户对产品的认知。详细的配置步骤可参考配置增强启动页

说明

增强启动页从API version 19开始支持,低版本下配置不会生效。

发布一多应用

发布一多应用时,可以配置应用分发至多种设备。默认分发设备为创建项目时所选的设备类型,但可根据实际需求调整。只需发布一次,用户即可在所有支持的设备上安装和使用您的应用。详细的发布流程可参考发布HarmonyOS应用

在这里插入图片描述

构建的一多工程若包含多个根据设备区分的HAP,且在配置支持设备时一并勾选了相关设备,应用程序(.app文件)在流水线或应用市场上被解包为N个Entry类型的HAP,根据HAP中的deviceTypes声明的设备类型,分发到不同设备。

在这里插入图片描述

说明

  • 请确保软件包中声明的支持设备范围(即module.json5文件中"deviceTypes"字段的枚举值)包含AppGallery Connect上最终勾选的设备类型。若声明范围小于勾选范围,超出部分将不会生效。若要新增支持的设备,可参考修改Module类型及设备类型
  • 在应用提交上架前可以修改分发的设备,应用一旦发布,升级版本只支持增加设备,无法删除已选择的设备。
Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐