在进行鸿蒙系统应用开发时,了解 ArkTS 工程的目录结构至关重要。本文将深入剖析一个典型的 ArkTS 项目的工程目录结构,并对各个目录和文件进行详细讲解,帮助你更好地理解鸿蒙应用的开发流程和配置方式。
一、工程目录结构概览
├ AppScope
│ ├ resources
│ │ └ base
│ │ ├ element
│ │ │ └ string.json
│ │ └ media
│ │ └ app_icon.png
│ └ app.json5 //应用的全局配置信息,详见app.json5配置文件
├ entry //HarmonyOS工程模块,编译构建生成一个HAP包
│ ├ src
│ │ ├ main
│ │ │ ├ ets // 用于存放ArkTS源码
│ │ │ │ ├ entryability // 应用/服务的入口
│ │ │ │ ├ entrybackupability // 应用提供扩展的备份恢复能力
│ │ │ │ └ pages // 应用/服务包含的页面
│ │ │ ├ resources // 用于存放应用/服务所用到的资源文件
│ │ │ │ ├ base
│ │ │ │ │ ├ element // 字符串、整型数、颜色、样式等资源的json文件
│ │ │ │ │ ├ media // 多媒体文件,如图形、视频、音频等文件
│ │ │ │ │ └ profile
│ │ │ │ ├ rawfile // 任意格式的原始资源文件
│ │ │ └ module.json5 // 模块配置文件
│ ├ build-profile.json5 // 当前的模块信息、编译信息配置项
│ ├ hvigorfile.ts // 模块级编译构建任务脚本
│ ├ obfuscation-rules.txt // 混淆规则文件
│ └ oh-package.json5 // 用来描述包名、版本、入口文件(类型声明文件)和依赖项等信息
├ oh_modules // 用于存放三方库依赖信息
├ build-profile.json5 // 工程级配置信息,包括签名、产品配置等
├ hvigorfile.ts // 工程级编译构建任务脚本
└ oh-package.json5 // 用于描述全局配置,如:依赖覆盖、依赖关系重写和参数化配置
二、目录和文件详解
1. AppScope
目录
AppScope
目录是应用的全局配置和资源文件夹,通常包含一些全局资源和配置,供应用的各个模块共享。
-
resources
:用于存放应用的资源文件,可以细分为多个子目录:base
:存放应用的基础资源,包括语言资源、样式资源等。element
:定义了应用中的基础元素,如字符串、数字、颜色、样式等资源。常见的如string.json
,其中存放了应用中会用到的字符串文本内容。{ "app_name": "MyHarmonyApp", "welcome_message": "Welcome to HarmonyOS!" }
media
:存放应用中的多媒体资源,如图标、背景图、音频等。app_icon.png
:应用的图标,通常在应用启动、任务栏显示等地方使用。- 其他如
.mp3
,.mp4
文件等多媒体内容。
profile
:用于定义一些配置文件,通常是关于应用设置的资源。
-
app.json5
:此文件包含了应用的全局配置信息。它通常包括应用名称、版本号、设备配置、权限声明等。json5
是 JSON 的超集,允许更多的灵活配置,如注释和尾逗号。
2. entry
目录
entry
目录是开发的核心部分,包含了应用模块的源代码、资源、配置以及构建任务。它的结构决定了应用的模块化和可扩展性。
-
src
:存放应用的源代码,主要是 ArkTS 的代码部分,分为以下几个子目录:-
ets
:存放 ArkTS 源码,包括应用的入口、扩展能力以及页面定义。entryability
:定义应用的入口能力,通常会包含应用启动后的初始化逻辑。entrybackupability
:为应用提供备份和恢复的能力。这部分代码会处理应用的数据备份、恢复等操作。pages
:应用中的各个页面模块,通常是应用的各个视图层或 UI 层。- 每个页面对应一个
.ets
文件,包含该页面的 UI 布局、业务逻辑、事件处理等内容。
- 每个页面对应一个
-
resources
:存放应用使用到的资源文件,类似AppScope/resources
,但一般这是局部资源,供当前模块使用。base
、media
、profile
:资源文件的具体分类。base
可能包括一些通用的样式文件,media
包括图片、音频等,profile
则是配置信息。rawfile
:原始资源文件,通常是应用中不需要设备适配的静态文件,路径和名称需要明确指定。
-
module.json5
:模块的配置文件,包含了当前模块的基本配置信息,包括:- 模块名称、版本、依赖关系等。
- HAP 包的配置信息,描述了应用如何在目标设备上运行,以及不同设备之间的适配。
- 应用/服务的全局配置信息。
-
-
build-profile.json5
:该文件存储模块级的编译配置项,包括:buildOption
:指定编译的相关选项,如编译优化等。targets
:指定编译目标设备或平台(例如:手机、电视、可穿戴设备等)。- 其他编译参数,如文件输出路径、模块版本等。
-
hvigorfile.ts
:该文件是模块级的构建任务脚本,用于定义模块的编译任务,例如如何处理源代码、如何构建应用包等。 -
obfuscation-rules.txt
:混淆规则文件。在发布应用时,开启代码混淆可以保护代码安全,防止反编译。此文件定义了混淆的规则,指明哪些部分需要混淆,哪些可以保留原样。 -
oh-package.json5
:该文件类似于package.json
,描述了模块的包信息:- 包名、版本、入口文件。
- 依赖项的版本以及依赖关系。
- 类型声明文件的引用等。
3. oh_modules
目录
oh_modules
目录用于存放应用的第三方库依赖。这些是应用运行所依赖的外部模块,类似于 Node.js 中的 node_modules
。
- 此目录下存放的库文件包括鸿蒙系统提供的标准库,也可以是你自己引入的第三方库或 SDK。
4. build-profile.json5
(工程级)
这是项目级的配置文件,用于定义整个工程的构建配置信息,主要包括:
signingConfigs
:签名配置项,指定如何对应用进行签名,以便发布到应用商店或进行设备测试。products
:产品配置,定义了项目的不同产品变种及其特定配置。
5. hvigorfile.ts
(工程级)
类似于模块级的 hvigorfile.ts
,工程级的构建任务脚本用于定义整个项目的构建逻辑。它包括了编译任务、部署任务等,在项目层面处理所有模块的构建。
6. oh-package.json5
(工程级)
此文件用于全局配置,包含:
overrides
:依赖项的覆盖,允许为特定依赖项指定不同的版本。overrideDependencyMap
:依赖关系的重写,能够修改依赖树。parameterFile
:为不同环境提供参数化配置。
三、总结
了解鸿蒙 ArkTS 工程的目录结构是开发鸿蒙应用的重要基础。各个目录和文件分别承担不同的职责,从源代码、资源文件
到编译配置和第三方依赖,都是构建高效、可维护应用的关键部分。掌握这些内容后,你将能够更清晰地理解工程的运作方式,并在开发中更加得心应手。希望本文能够帮助你更好地理解鸿蒙应用的结构和配置方式。
暂无评论内容