首页 > 编程语言 >HarmonyOS鸿蒙开发 应用程序项目工程结构

HarmonyOS鸿蒙开发 应用程序项目工程结构

时间:2024-09-03 09:52:35浏览次数:7  
标签:鸿蒙 模型 程序包 应用程序 HarmonyOS 开发 应用 Stage

文章目录


前言

鸿蒙的应用程序工程结构分为FAStage两种模型结构,这两种模型的应用包结构并不相同。

  • FA模型:API 7开始支持的模型,目前已不是官方主推模型,所以不再做详细介绍,感兴趣的读者可以另外了解。
  • Stage模型:支持API 9及以上版本,也是未来主推的模型,所以我们主要学习Stage模型。

需要注意的是,JS工程只支持FA模型,所以打算以JS作为开发语言的同学还是要去学习一下FA模型


接下来我们学习一下鸿蒙开发相关的基础知识,并介绍Stage模型的应用程序包结构。

一、基础知识

1、应用程序包

首先我们来了解一个概念:用户应用程序。用户应用程序泛指运行在设备的操作系统之上,为用户提供特定服务的程序,简称“应用”。一个应用所对应的软件包文件,称为“应用程序包”。
“应用程序包”也就是我们所说的“应用程序工程”,也有人叫项目工程包,或者其他类似叫法,我们知道是同个概念就好。

鸿蒙应用/服务发布形态是APP Pack(Application Package),这是由一个或多个HAP(Harmony Ability Package)包以及描述APP Pack属性的pack.info文件组成的。

2、UI框架

鸿蒙的UI框架是方舟开发框架(ArkUI框架),方舟开发框架为开发者提供应用UI开发所必需的能力,比如多种组件、布局计算、动画能力、UI交互、绘制等。
方舟开发框架针对不同目的和技术背景的开发者提供了两种开发范式,分别是基于ArkTS的声明式开发范式(简称“声明式开发范式”)和兼容JS的类Web开发范式(简称“类Web开发范式”)。
在这里插入图片描述

3、Stage应用模型

应用模型是鸿蒙为开发者提供的应用程序所需能力的抽象提炼,提供了应用程序必备的组件和运行机制。有了应用模型,开发者可以基于一套统一的模型进行应用开发,使应用开发更简单、高效。
个人理解模型是鸿蒙应用开发的一种逻辑结构组织形式,在这个模型下的应用程序包具有相对固定的结构。

下面附上一张鸿蒙官方的Stage模型应用程序包结构图。
在这里插入图片描述

鸿蒙的Module、Entry、Feature、HAP、HAR、HSP等概念的详细含义和相关知识后面再另写一篇做专门介绍

这种应用模型被称为“Stage模型”是因为提供了AbilityStage、WindowStage等类作为应用组件和Window窗口的“舞台”。

关于“Stage模型”其实还有很多细节的知识需要学习,因为本篇只是浅显的介绍鸿蒙的应用程序包结构知识,所以不做展开了,后面会另外做详细的讲解。

二、Stage模型的应用程序包结构

Stage模型的项目工程目录结构如下

在这里插入图片描述

  • AppScope :AppScope目录是由DevEco Studio自动生成的,不可更改。

    • AppScope >app.json5: 用于声明应用的全局配置信息,包括应用Bundle名称、应用名称、应用图标、应用版本号等。(接触过Android开发的同学应该会发现这里的功能有点像Android的AndroidManifest.xml文件中关于application声明的部分内容,又包含了部分build.gradle的内容,其实最新的HarmonyOS NEXT开发跟Android开发已经大相径庭了,差异还是比较大的)。
    • AppScope > resources : 用于存放应用需要用到的资源文件。
  • entry:应用/服务模块,编译构建生成一个HAP。

    • src > main > ets:用于存放Module的ArkTS源码文件(.ets文件)。

    • src > main > ets > entryability:应用/服务的入口文件。

    • src > main > ets > pages:应用/服务包含的页面。

    • src > main > resources:用于存放应用/服务模块所用到的资源文件,如图形、多媒体、字符串、布局文件等。

      resources文件夹下部分文件示意图
      在这里插入图片描述

    • src > main > module.json5:于声明Module基本信息、支持的设备类型、所含的组件信息、运行所需申请的权限等。

    • build-profile.json5:当前的模块信息、编译信息配置项,包括buildOption、targets配置等。

    • hvigorfile.ts:模块级编译构建任务脚本。

    • oh-package.json5:描述三方包的包名、版本、入口文件(类型声明文件)和依赖项等信息。

  • oh_modules :用于存放三方库依赖信息,包含应用/服务所依赖的第三方库文件。

  • build-profile.json5:应用级配置信息,包括签名、产品配置等。

  • hvigorfile.ts:应用级编译构建任务脚本。

  • oh-package.json5:描述全局配置,如:依赖覆盖(overrides)、依赖关系重写(overrideDependencyMap)和参数化配置(parameterFile)等。

细心的同学应该发现了存在多个同名的文件,比如build-profile.json5、hvigorfile.ts、oh-package.json5、resources文件夹等,这是因为一个是Module级的文件,一个是工程级的文件。如果之前做过Android开发,这应该是很好理解的。


总结

今天介绍了鸿蒙的Stage模型应用程序包结构,这是以DevEco Studio的 ArkTS工程(Stage模型) 为模板介绍的,其实鸿蒙的DevEco Studio项目工程还包括 C++工程(Stage模型)JS工程(FA模型) 这两种类型。因为ArkTS工程是主流,所以本文介绍了ArkTS工程的项目工程结构,剩下的两个工程有机会的话会另外撰文编写。

应用程序包在不同阶段有不同的形态,分别为开发态编译态发布态,今天介绍的是开发态应用程序结构,剩下的编译态和发布态在学习到相应进度时会另外再做详细介绍。

参考资料: HarmonyOS Developer文档中心

标签:鸿蒙,模型,程序包,应用程序,HarmonyOS,开发,应用,Stage
From: https://blog.csdn.net/u013006974/article/details/141813099

相关文章

  • 启动应用程序出现SebBackgroundManagerPolicy.dll找不到问题
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个SebBackgroundManagerPolicy.dll文件(挑选合......
  • 华为鸿蒙手机谷歌框架GMS安装,安装时出现系统存在更高版本解决方法,毅然助手方法教程
    大家好,我是程序员毅然,一个资深的互联网软件开发者。每天给大家更新毅然助手华为鸿蒙安装谷歌的方法和各种可能遇到的问题的解决方法。以下方法来自工众号‘’毅然助手‘’,若侵权必删!出现这个问题的原因就是没有操作好毅然助手的第一步和用户和账户中有多个账号,下面我来详细......
  • Python Web应用程序构建的最佳实践(代码实例与深度解析)
    在当今数字时代,构建高效、可扩展的Web应用程序是开发者们的一项重要任务。Python,作为一种简洁、强大的编程语言,为Web开发提供了丰富的工具和框架。在本篇文章中,我们将探讨使用Python构建Web应用程序的最佳实践,通过代码实例和深度解析来帮助你更好地理解和运用这些技术。1.选择合适......
  • “由于找不到 acui23.dll 无法执行代码”专家级修复教程:详尽步骤助您重启应用程序
    当您尝试运行AutoCAD或其他依赖acui23.dll文件的应用程序时,可能会遇到“由于找不到acui23.dll无法执行代码”的错误提示。这通常意味着系统中缺少必要的动态链接库文件或存在兼容性问题。本文将详细解释这个问题的原因,并提供多种解决方法,帮助您顺利运行应用程序。acui2......
  • 艾体宝洞察丨透过语义缓存,实现更快、更智能的LLM应用程序
    传统的缓存只存储数据而不考虑上下文,语义缓存则不同,它能理解用户查询背后的含义。它使数据访问更快,系统响应更智能,对GenAI应用程序至关重要。什么是语义缓存?语义缓存解释并存储用户查询的语义,使系统能够根据意图而不仅仅是字面匹配来检索信息。这种方法可以实现更细致入微的数据......
  • 使用 nuxi dev 启动 Nuxt 应用程序的详细指南
    title:使用nuxidev启动Nuxt应用程序的详细指南date:2024/9/2updated:2024/9/2author:cmdragonexcerpt:摘要:本文介绍了使用nuxidev命令启动Nuxt应用程序的方法,包括安装Nuxt.js、启动开发服务器及配置选项等详细步骤。categories:前端开发tags:Nuxt.j......
  • HarmonyOS实战开发:NAPI接口规范开发
    简介NAPI(NativeAPI)组件是一套对外接口基于Node.jsN-API规范开发的原生模块扩展开发框架。图1 NAPI组件架构图NativeEngineJS引擎抽象层,统一JS引擎在NAPI层的接口行为。ModuleManager管理模块,用于模块加载、模块信息缓存。ScopeManager管理NativeValue的生命周......
  • 鸿蒙Next 开发App,沉浸式效果
    今天给自己开发的鸿蒙NextApp实现沉浸式效果,其实就是屏幕上边的状态栏和下边的横条区域和App界面一样的颜色。之前在知识星球分享过 expandSafeArea的方案(https://t.zsxq.com/8jkJ9),但后来在真机上发现有问题,在对App进行缩小分屏的时候,有个缩小动画,发现其实底部还是默认色-......
  • 华为见非凡品牌盛典及鸿蒙智行新品发布会定档,颠覆产品即将亮相
    9月2日,华为终端宣布将于9月10日14:30举行华为见非凡品牌盛典及鸿蒙智行新品发布会。华为常务董事、终端BG董事长余承东表示,即将发布的产品将是华为最具引领性、创新性和颠覆性的产品,引发了业界的广泛关注。博主暗示发布会新品内容:“9+7+3”博主@Adak封狼居胥在社交媒体上发......
  • 鸿蒙跨端实践-ArkTS和CAPI的混合开发实现
    一、背景在动态化-鸿蒙跨端方案文章中,讲述了动态化适配鸿蒙的方案实现,当在鸿蒙系统进行UI渲染的时候,我们使用了系统的组件进行递归渲染。在iOS和Android也是借助各自系统组件进行的渲染,但是在鸿蒙系统会存在以下4个严重问题:1.UI层级过多以金融APP理财频道页中的一个乐高楼层中的“......