鸿蒙一次开发,多端部署(四)工程管理

news/2024/7/21 12:23:33 标签: harmonyos, 华为, 移动开发, ui, 鸿蒙开发

DevEco Studio的基本使用,请参考DevEco Studio使用指南。本章主要介绍如何使用DevEco Studio进行多设备应用开发。

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

工程创建

参考创建系统工程,先创建出最基本的项目工程。可以看到DevEco Studio创建出的默认工程,仅包含一个的entry类型的模块。

如果直接使用如下所示的平级目录进行模块管理,工程逻辑结构较混乱且模块间的依赖关系不够清晰,不利于开发及后期维护。

/application
├── common
├── feature1
├── feature2
├── featureN
├── wearable
├── default
└── productN

更推荐使用本文部署模型小节中介绍的common、features、product三层工程结构。工程结构示例如下所示:

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

接下来将依次介绍如何新建Module、修改配置文件以及调整目录,以实现“一多”推荐的“三层工程结构”。

新建Module

参考开发ohpm包,新建三个ohpm模块,分别命名为common、feature1、feature2。参考添加/删除Module,新建一个entry类型的模块,假设命名为“wearable”(仅仅为了说明某一类产品)。示例如下:

说明:

  • 在一个工程中同一个设备类型只支持一个Entry类型的模块。
  • 在下一个小节,我们将介绍如何修改Module的配置,包括Module的类型以及其支持的设备类型等。

修改Module配置

修改Module名称

修改创建工程时默认的entry模块名称。在该模块上点击鼠标右键,依次选择”Refactor -> Rename”,将名称修改为default。

修改Module类型及其设备类型

通过修改每个模块中的配置文件(module.json5)对模块进行配置,配置文件中各字段含义详见配置文件说明。

  • 将default模块的deviceTypes配置为[“default”, “tablet”],同时将其type字段配置为entry。 即default模块编译出的HAP在默认设备和平板上安装和运行。

  • 将wearable模块的deviceTypes配置为[“wearable”],同时将其type字段配置为entry。 即wearable模块编译出的HAP仅在智能穿戴设备上安装和运行。

调整目录结构

调整目录结构

在工程根目录(MyApplication)上点击鼠标右键,依次选择“New -> Directory”新建子目录。创建product和features两个子目录。

用鼠标左键将default目录拖拽到新建的product目录中,在IDE弹出的确认窗口中,点击“Refactor”即可。

按照同样的步骤,将wearable目录放到product目录中,将feature1和feature2放到features目录中。

修改依赖关系

回顾之前小节中关于“工程结构”的介绍,我们推荐在common目录中存放基础公共代码,features目录中存放相对独立的功能模块代码,product目录中存放完全独立的产品代码。这样在product目录中依赖features和common中的公共代码来实现功能,可以最大程度实现代码复用。

配置依赖关系可以通过修改模块中的oh-package.json文件。如下图所示,通过修改default模块中的oh-package.json文件,使其可以使用common、feature1和feature2模块中的代码。更多详情参考配置系统 ohpm包依赖。

同样的,修改feature1和feature2模块中的oh-package.json文件,使其可以使用common模块中的代码。

修改oh-package.json文件后,请点击右上角的“Sync Now”,否则改动不会生效。

引用ohpm包中的代码

在开发ohpm包中,仅介绍了如何使用ohpm包中的页面和资源,本小节以例子的形式补充介绍如何使用ohpm包中的类和函数。

示例如下:

  • 在common模块中新增ComplexNumber类,用于表征复数(数学概念,由实部和虚部组成),该类包含toString()方法,将复数转换为字符形式。

  • 在common模块中新增Add函数,用于计算并返回两个数字的和。

  • 在default模块中,使用common模块新增的ComplexNumber类和Add函数。

  1. 在”common/src/main/ets”目录中,按照需要新增文件和自定义类和函数。

  1. 在”common/index.ets”文件中,申明需要export的类、函数的名称及在当前模块中的位置,否则其它模块无法使用。

  1. 在default模块中import和使用这些类和函数。注意提前在default模块的oh-package.json文件中配置对common模块的依赖关系。

说明:
如果需要将ohpm包发布供其他开发者使用,具体可参考发布ohpm包。

总结

本章主要介绍了如何实现推荐的工程结构,以便更好的进行多设备应用开发。

关于IDE的基本使用,比如如何进行编译构建、如何签名、如何使用预览器等,DevEco Studio使用指南中已经有非常详尽的介绍,本文不再重复介绍。

为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

鸿蒙开发学习手册》:

如何快速入门:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. ……

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ……

鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH

鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH

1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.
鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向


http://www.niftyadmin.cn/n/5444999.html

相关文章

代码随想录刷题day31|分发饼干摆动序列最大子序和

文章目录 day31学习内容一、分发饼干1.1、思路1.2、代码-错误写法1.3、代码-大饼干给大胃口的孩子-写法11.3.1、i > 0和index > 0,为什么不能把等于号去掉呢 二、摆动序列2.1、思路2.1.1、什么是摆动序列2.1.2、摆动的情况分析算摆动的情况:不算摆…

LinuxU盘挂载原理,为什么要用到U盘挂载及实现U盘挂载

目录 一、U盘挂载原理 二、为什么要用到U盘挂载 三、实现U盘挂载 一、准备工作 1、安装gcc 2、下载ntfs-3g 3、解压 4、编译准备 5、编译并安装 二、挂载演示 一、U盘挂载原理 Linux的U盘挂载原理涉及以下几个方面: 设备识别:当您将U盘插入Lin…

3.22号arm

作业 实验现象,主函数每一秒循环字符m,当按下按键1,则串口输出1,按下按键2,串口输出2,按下按键3,串口输出3 main.c #include "uart4.h"#include "led.h"#include "k…

【财务管理系统】业务向,结转是什么?总账的理解?余额表的理解以及结转涉及表结构【第五期】

前言 结转是一个重要的会计处理过程,涉及将某一会计期间的账目余额转移到下一个会计期间。结转通常发生在会计年度或月度结束时,是确保会计记录连续性和准确性的关键步骤。 已经写了四期 财务管理系统报账和挂账分别什么区别!报销又是什么【…

【JS面试题 - 打印结果】++[[]][+[]] + [+[]]

现有一段代码,说出打印结果 [[]][[]] [[]]这道题考验的是运算符的基础知识,下面来逐步分析: 先把表达式按照优先级最低的运算符()进行分割,得到两部分: [[]][[]] 和 [[]] [[]][[]] 表达式中…

海外媒体发稿:9种高效的媒体套餐内容发稿策略分析-华媒舍

海外媒体发稿:9种高效的媒体套餐内容发稿策略分析高效的媒体发布和营销推广策略对公司、本人的成就尤为重要。下面我们就对于媒体套餐内容发稿营销推广策略开展全面解析,帮助读者掌握并应用这9种合理的思路,进而获得更好的媒体营销效果。 1.媒…

小红书探店博主怎么合作?推广攻略分享

小红书成为了年轻人探索美食、分享生活经验的重要平台,探店博主们有着庞大的粉丝群体和极强的粉丝粘性。对于商家而言,如何和这些探店博主进行合作,提升品牌影响力呢?接下来伯乐网络传媒将为你详细解析。 一、小红书探店博主合作方…

YOLOV9训练自己的数据集

1.代码下载地址GitHub - WongKinYiu/yolov9: Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information 2.准备自己的数据集 这里数据集我以SAR数据集为例 具体的下载链接如下所示: 链接:https:/…