鸿蒙开发采用的是多模块开发,与spring开发不同的是:鸿蒙应用在创建时就已经是多模块的形式,而 spring 要进行相应的配置。接下来就逐一介绍每一个文件夹和文件的作用及其存储的位置。

具体详细的官方开发手册:华为开发者官方网站_创新从这里开始

声明

本文中的项目结构指代的是下图这种非“一次编译多次运行”的单鸿蒙开发项目

 

文件结构

md 结构

.hvigor

  • 作用:这是 Hvigor 构建工具的缓存和临时工作目录。
  • 详解:Hvigor 是鸿蒙默认的构建工具(类似 Gradle)。在构建过程中,它会在这里存储中间产物、缓存数据和构建状态信息。
  • 注意:通常不需要手动修改此目录下的内容,且在版本控制(如 Git)中应被忽略(包含在 .gitignore 中)。

.idea

  • 作用:IDE(DevEco Studio)的项目配置目录。
  • 详解:基于 IntelliJ 平台,存储项目的编辑器设置、代码风格配置、运行/调试配置(Run/Debug Configurations)、模块映射等 IDE 特有的元数据。
  • 注意:部分文件(如 workspace.xml)包含用户本地特定设置,通常建议不要提交到版本控制系统,以免冲突。

AppScope

  • 作用:存放应用全局级别的资源和配置文件。
  • 核心文件
    • app.json5:定义应用的全局配置,如应用包名(bundleName)、版本号、应用名称、图标路径、支持的设备类型等。
    • resources:存放全局共享的资源(如字符串、颜色、媒体文件)。如果某个资源在模块(如 entry)中没有定义,系统会查找此处。
  • 类比:类似于 Android 项目根目录下的 AndroidManifest.xml 的部分全局属性加上 res 目录的全局部分。

app.json5

  • 作用:应用的全局配置文件。
  • 详解:这是整个应用的“身份证”。它定义了应用的包名(bundleName)、版本号(versionCode, versionName)、应用名称(引用自 string.json)、图标路径(引用自 media)、支持的设备类型等关键信息。
  • 重要性:修改这里可以改变应用在桌面上显示的名字和图标,或者配置应用的权限请求。

resources

这个文件夹存放应用所需的静态资源文件(图片、字符串、颜色等),按照特定的目录结构组织,以便系统根据设备特性(如语言、屏幕密度、深色模式)自动适配。

base

  • 作用:存放默认(基准)的资源文件。
  • 详解:当没有针对特定语言(如 zh_CN)或特定屏幕密度(如 xxhdpi)的限定目录时,系统默认使用 base 目录下的资源。它是资源的“兜底”方案。

element

  • 作用:存放基础元素资源,通常是 XML 或 JSON 格式的配置数据。
  • 示例文件
    • string.json
      • 作用全局字符串资源表
      • 详解:这里定义了应用中所有的文本内容(如应用名称 "MyApplication")。
      • 好处:将代码中的硬编码字符串提取到这里,方便进行多语言国际化(只需添加不同语言的 json 文件)和统一修改文案,而无需修改代码。
      • 引用方式:在代码或配置文件中通过 $r('app.string.app_name') 引用。

media

  • 作用:存放媒体资源文件,主要是图片和原始文件。
  • 示例文件
    • background.png
      • 作用:通常用作应用启动页背景窗口背景
      • 场景:在 app.json5 中配置 icon 或 label 时可能会用到,或者在代码中作为全屏背景图。
    • foreground.png
      • 作用:通常与 background.png 配合使用,构成分层图标启动页前景
      • 场景:鸿蒙的应用图标通常由“背景层”和“前景层”组成,以实现更好的视觉效果和自适应形状。
    • layered_image.json
      • 作用分层图像配置文件
      • 详解:这是一个 JSON 描述文件,用于告诉系统如何将 foreground.png 和 background.png 组合在一起。它定义了图层的顺序、缩放方式等。
      • 场景:主要用于定义应用图标(Icon)。在 app.json5 中,icon 属性通常指向这个 json 文件,而不是直接指向 png 图片,这样系统可以根据不同的设备形状(圆形、方形、圆角矩形)自动裁剪出合适的图标。

entry

.preview

用于 DevEco Studio 的实时预览功能(Previewer),支持在编辑器中直接查看 UI 效果。

  • config/
    • 存放预览器的运行时配置。
  • default/
    • 默认预览环境配置。
  • PreviewBuildParam.json
    • 预览构建参数配置文件,定义预览时使用的设备型号、屏幕尺寸、系统版本等。

作用:让开发者在不运行真机或模拟器的情况下,快速预览 ArkTS 页面的渲染效果。

build

由 Hvigor 构建工具自动生成,存放编译后的中间文件和最终产物(如 HAP 包)。

  • config/
    • 构建过程中的临时配置。
  • default/
    • 默认构建目标的输出内容。

⚠️ 注意:此目录不应提交到 Git,通常在 .gitignore 中已排除。

src

main

这是你日常开发的核心区域,包含所有业务代码和资源。

ets

entryability

  • 应用入口能力(Ability)的实现。
  • 包含 EntryAbility.ts,是应用启动时第一个执行的类,负责初始化、生命周期管理等。

entrybackupability

  • 备份恢复能力(BackupAbility),用于数据备份与还原(可选功能)。

pages

  • 页面路由对应的页面文件。
  • 每个 .ets 文件对应一个页面,通过 @Router 装饰器注册路径。
  • 示例:Index.ets, DetailPage.ets

resources

base

默认资源(无语言/密度限定)。

element

  • 字符串、颜色、布尔值等基础元素(如 string.json)

media

  • 图片、音频、视频等媒体文件

profile

  • 配置文件(如权限配置、网络策略等)

dark

  • 深色模式专用资源。
  • 当系统切换为深色主题时,自动加载此处资源覆盖 base/ 中的同名资源。

rawfile

  • 原始文件目录,存放不需要编译的资源(如 HTML、JSON 数据文件、证书等)。
  • 可通过 resourceManager.getRawFileContent() 读取。

module.json5

位于 src/main/ 下,是该模块的“清单文件”。

  • 定义模块名称、类型(entry / feature)、依赖关系、暴露的 Ability、权限声明、支持的设备类型等。
  • 类似于 Android 的 AndroidManifest.xml + build.gradle 的部分功能。

必须存在,否则无法构建!

mock

用于单元测试或接口 mocking。

  • mock-config.json5
    • 定义哪些 API 请求需要被拦截并返回模拟数据。
    • 常用于前端独立开发阶段,无需后端服务即可调试。

提高开发效率,解耦前后端依赖。

ohosTest

用于编写和运行 UI 自动化测试集成测试

  • ets/
    • 测试脚本代码,使用 @ohos.test 框架。
  • module.json5
    • 测试模块的配置,指定测试入口、依赖等。

用于验证应用在真实设备上的行为是否符合预期。

test

用于编写 纯逻辑单元测试(不依赖 UI 或系统服务)。

  • List.test.ets
    • 对列表相关逻辑进行测试。
  • LocalUnit.test.ets
    • 本地工具类或算法的单元测试。

使用 assert 断言库,确保核心逻辑正确性。

.gitignore

Git 忽略规则,避免提交构建产物、缓存、本地配置等。

build-profile.json5

模块级构建配置,如签名信息、产品维度、构建类型(Debug/Release)。

hvigorfile.ts

模块级构建脚本入口,自定义构建任务或插件加载。

obfuscation-rules.txt

代码混淆规则文件,用于 Release 模式下保护源码(类似 ProGuard)。

oh-package.json5

模块级依赖管理文件,声明本模块所需的第三方库或内部模块依赖。

hvigor

    • 作用:存放前端构建工具 Hvigor 的核心配置和脚本。
    • 详解:包含 Hvigor 的插件、任务编排逻辑等。它是构建系统的“引擎”部分,定义了如何编译、打包、签名等任务。

oh_modules

    • 作用:存放项目依赖的第三方库和模块。
    • 详解:类似于 Node.js 项目中的 node_modules 或 Android 的 .gradle/caches。当你通过 ohpm (Open Harmony Package Manager) 安装依赖包时,这些包会被下载并存储在这里。
    • 注意:体积通常较大,必须在 .gitignore 中忽略,不应提交到代码仓库。

.gitignore

    • 作用:Git 版本控制忽略规则文件。
    • 详解:列出不需要提交到 Git 仓库的文件和目录模式(如 .hvigor/, oh_modules/, local.properties, build/ 等),防止构建产物、本地配置和敏感信息被误提交。

build-profile.json5

    • 作用:工程级的构建配置文件。
    • 详解: 1、定义构建参数,如签名配置(Signing Configs)、产品维度(Products,区分不同版本或设备)、构建类型(Debug/Release)。 2、指定哪些模块参与构建。
    • 重要性:打包发布时的签名信息和版本控制策略主要在此配置。

code-linter.json5

    • 作用:代码静态检查(Linter)的配置文件。
    • 详解:定义代码规范规则,用于在开发过程中自动检查代码风格、潜在错误和不规范的写法(类似于 ESLint 或 Pylint 的配置)。

hvigorfile.ts

    • 作用:项目级的构建脚本入口。
    • 详解:这是一个 TypeScript 文件,用于配置和注册项目级别的构建任务。它告诉 Hvigor 如何加载插件、如何执行特定的构建流程。开发者可以在此自定义构建任务。

local.properties

    • 作用:本地环境属性配置。
    • 详解:存储本地 SDK 的路径(如 sdk.dir)、Node.js 路径等与环境强相关的配置。
    • 注意:由于每个人的电脑环境路径不同,此文件绝对不应该提交到版本控制系统(默认已在 .gitignore 中)。

oh-package.json5

    • 作用:项目依赖描述文件。
    • 详解:类似于 Node.js 的 package.json。声明项目所需的依赖包名称、版本范围、脚本命令等。

oh-package-lock.json5

    • 作用:依赖锁定文件。
    • 详解:记录了 oh-package.json5 中所有依赖包及其子依赖的确切版本号和下载哈希值。
    • 重要性:确保所有开发者或构建服务器安装的依赖版本完全一致,避免“在我机器上是好的”这类问题。建议提交到版本控制。
ProjectRoot (鸿蒙工程根目录)
│
├── .hvigor/                      # [构建缓存] Hvigor 工具生成的临时文件和缓存 (Git忽略)
│
├── .idea/                        # [IDE配置] DevEco Studio 的项目设置、运行配置 (部分文件Git忽略)
│
├── AppScope/                     # [全局资源] 应用级全局配置和共享资源
│   ├── app.json5                 # └─ 全局配置:包名、版本、图标、支持设备类型
│   └── resources/                # └─ 全局资源:字符串、颜色、媒体 (base/element/media)
│
├── entry/                        # [主模块] 应用的主要业务代码和资源 (默认入口模块)
│   ├── .preview/                 # └─ [预览配置] 预览器设备参数 (PreviewBuildParam.json)
│   ├── build/                    # └─ [构建产物] 编译生成的 HAP 包和中间文件 (Git忽略)
│   ├── src/
│   │   └── main/                 # └─ [核心开发] 业务逻辑与资源主目录
│   │       ├── ets/              #     ├─ [代码] ArkTS 源代码
│   │       │   ├── entryability/ #     │  ├─ 入口能力 (EntryAbility.ts)
│   │       │   ├── pages/        #     │  ├─ 页面路由 (Index.ets, etc.)
│   │       │   └── ...           #     │  └─ 其他 Ability (Backup等)
│   │       ├── resources/        #     ├─ [资源] 模块级资源
│   │       │   ├── base/         #     │  ├─ 默认资源 (string.json, media)
│   │       │   ├── dark/         #     │  ├─ 深色模式资源
│   │       │   └── rawfile/      #     │  └─ 原始文件 (不编译)
│   │       ├── module.json5      #     ├─ [模块清单] 定义 Ability、权限、依赖 (必选)
│   │       ├── mock/             #     ├─ [接口模拟] Mock 配置 (mock-config.json5)
│   │       ├── ohosTest/         #     ├─ [UI测试] 自动化测试脚本
│   │       └── test/             #     └─ [单元测试] 纯逻辑测试脚本
│   ├── build-profile.json5       # └─ [模块构建] 模块级签名、产品维度配置
│   ├── hvigorfile.ts             # └─ [构建脚本] 模块级构建任务入口
│   ├── obfuscation-rules.txt     # └─ [混淆规则] Release 包代码混淆配置
│   └── oh-package.json5          # └─ [模块依赖] 声明本模块的第三方库依赖
│
├── .gitignore                    # [版本控制] Git 忽略规则 (构建产物、缓存、本地配置)
│
├── build-profile.json5           # [工程构建] 全局签名配置、产品维度、构建类型 (Debug/Release)
│
├── code-linter.json5             # [代码规范] 静态代码检查规则配置
│
├── hvigorfile.ts                 # [工程脚本] 项目级构建任务编排和插件加载
│
├── local.properties              # [本地环境] SDK 路径、Node 路径 (严禁提交到 Git)
│
├── oh-package.json5              # [工程依赖] 项目级依赖描述 (类似 package.json)
│
├── oh-package-lock.json5         # [依赖锁定] 锁定依赖版本,确保环境一致 (建议提交)
│
└── oh_modules/                   # [依赖库] 下载的第三方库和模块 (类似 node_modules, Git忽略)

dp.xmind

 

Logo

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

更多推荐