认识项目工程目录

乾坤初翻转鸿蒙才开始
项目目录你都认识吗 ?
存个图片放哪你知道吗 ?
创建个新文件你知道创建在哪里吗 ?

  • 已经创建好了项目
  • 在开始开发之前,我们先要认识一下我们的项目目录
  • 知道我们的项目内都有什么东西,分别是做什么的
  • 这样在开发中才可以真的做到如鱼得水

一、基础目录介绍

  1. .hvigor

    存储购置信息的文件,主要用于发布打包

  2. .idea

    开发工具的相关配置文件,可以忽略不计

  3. AppScope

    工程目录,存放全局公共资源
    也就是全局所需要的资源文件

  4. entry

    应用的主模块文件夹
    存放 Harmony 应用的源代码,资源等内容
    也是我们主要的开发文件

  5. hvigor

    前端构建配置信息,TS 依赖,npm 包之类的内容

  6. oh_modules

    存放项目依赖包,类似于 node_modules 的作用

  7. build_prefile.json5

    工程级配置信息,包括签名、产品配置等。可以简单理解为后续打包发布需要的一些配置

  8. hvigorfile.ts

    工程级编译构建任务脚本,hvigor 是基于任务管理机制实现的一款全新的自动化构建工具,主要提供任务注册编排,工程模型管理、配置管理等核心能力

  9. hvigorw

    Linux 下执行的脚本文件( OHP 编译构建脚本文件 )

  10. hvigorw.bat

    bat window 下执行的脚本文件( OHP 编译构建脚本文件 )

  11. local.properties

    属性配置文件,主要保存本地的一些配置信息
    比如 SDK 所在目录
    不需要过多关注

  12. oh-package.json5

    工程依赖配置文件,以及项目配置,包名之类的内容
    类似于以前的 package.json

  13. oh-package-lock.json5

    树形项目依赖配置文件
    记录第三方依赖的下载地址和 md5 文件
    类似于以前的 package-lock.json

二、entry 目录详解

  1. .preview

    进入预览时生成的构建目录,如果你的项目没有进行过预览
    那么没有这个文件夹

  2. build

    真机测试时生成的构建目录,如果你的项目没有进行过真机预览
    那么没有这个文件夹

  3. src

    项目的源代目录

  4. build-profile.json5

    当前模块(entry)的编译构建打包配置信息

  5. hvigorfile.ts

    当前模块(entry)的 TS 文件,模块执行编译和构建任务脚本文

  6. oh-package.json5

    当前模块(entry)的模块依赖配置文件,以及项目配置,包名之类
    类似于当前模块的 node_modules

三、src 目录详解

  1. main

    核心代码目录

    • a. ets : ets 代码,也是项目代码
    • b. resources : 模块公共资源管理文件国际化等 同 AppScope 下 resources 类似
    • c. module.json5 : 模块开发当前模块的配置信息
  2. ohosTest

    单元测试代码

四、ets 目录详解

  1. entryability

    存放 ability 文件,用于当前 ability 应用逻辑和生命周期管理
    专门处理逻辑代码以及生命周期管理

  2. pages

    存放 UI 界面相关代码文件,初始会生成一个 Index 页面
    界面开发代码

五、module.json5 文件详解

这里的 module.json5 文件说明的是 “ entry > src > main > module.json5 ” 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
{
"module": {
// 该标签标识当前module的名字,module打包成hap后,表示hap的名称,标签值采用字符串表示(最大长度31个字节),该名称在整个应用要唯一
"name": "entry",
// 表示模块的类型,类型有三种,分别是entry、feature和har。
"type": "entry",
// 描述
"description": "$string:module_desc",
// 该标签标识hap的入口ability名称或者extension名称。只有配置为mainElement的ability或者extension才允许在服务中心露出
"mainElement": "EntryAbility",
// 该标签标识hap可以运行在哪类设备上,标签值采用字符串数组的表示。
"deviceTypes": ["phone", "tablet"],
// 标识当前Module是否在用户主动安装的时候安装,表示该Module对应的HAP是否跟随应用一起安装。- true:主动安装时安装。- false:主动安装时不安装
"deliveryWithInstall": true,
// 标识当前Module是否支持免安装特性。- true:表示支持免安装特性,且符合免安装约束。- false:表示不支持免安装特性
"installationFree": false,
// 对应的是main_pages.json文件,用于配置ability中用到的page信息。 可以理解为路由表,按住command点击可以进入
"pages": "$profile:main_pages",
// 存放当前模块中所有的ability元能力的配置信息,其中可以有多个ability
"abilities": [
{
// 该标签标识当前ability的逻辑名,该名称在整个应用要唯一,标签值采用字符串表示(最大长度127个字节)
"srcEntry": "./ets/entryability/EntryAbility.ts",
// 描述,
// ability的入口代码路径。,
"name": "EntryAbility",
"description": "$string:EntryAbility_desc",
// ability的图标。该标签标识ability图标,标签值为资源文件的索引。该标签可缺省,缺省值为空。如果ability被配置为MainElement,该标签必须配置
"icon": "$media:icon",
// ability的标签名。
"label": "$string:EntryAbility_label",
// 启动页面的图标。
"startWindowIcon": "$media:icon",
// 启动页面的背景色。
"startWindowBackground": "$color:start_window_background",
"exported": true,
// 标识能够接收的意图的action值的集合,取值通常为系统预定义的action值,也允许自定义。
"skills": [
{
"entities": ["entity.system.home"],
"actions": ["action.system.home"]
}
]
}
]
}
}