Stage 模型应用程序包的结构
AppScope 目录是工具自动生成的
Module 则是工具自动生成的 entry、library,也可以自定义。
Module 类型
Module 有两种类型:
- Ability 类型的 Module:用来实现应用功能和特性,每一个 Ability 类型的 Module 编译以后。生成一个 hap 后缀的文件,也就是 HAP 包,可以独立安装和运行,是应用安装的基本单元。
- Library类型的Module:实现代码和资源共享,同一个Library类型的Module 可以被多个其他的 Module 引用。
配置文件
应用级配置:在 AppScope 目录下的 app.json5,
Module 级配置信息:在 main 下的 module.json5 文件。
app.json5:
- 应用的 Bundle 名称,用来标识应用的唯一性
- 应用向用户展示的应用版本号
- 应用图标
- 应用名称等等
module.json5:
- 当前 Modlue 可以运行在哪些类型设备上
- 当前模块的入口 UIAbility 代码路径
- 当前 Module 中的 UIAbility 组件的配置信息
- 当前模块的路由表路径信息
- 当前应用运行时需要向系统申请使用网络权限
ArkTS 源码文件:Module_name > src > main > ets:用于存放Module的ArkTS源码文件(.ets文件)。
其他的配置:
build-profile.json5:Module 级的构建配置文件,包括了应用签名、产品配置等等
hvigorfile.ts:编译构建任务脚本,开发者可以自定义编译构建工具版本、控制构建行且的配置参数
obfuscation-rules.txt:混淆规则文件,开启混淆以后,在适应 release 模式进行编译,就会对代码进行编译、混淆以及压缩处理,保护代码资产。
oh-package.json5:用来存放依赖信息,也包括第三方依赖和共享库。
资源文件
AppScope > resources :用于存放应用需要用到的资源文件。
Module_name > src > main > resources :用于存放该Module需要用到的资源文件。
element:元素资源目录,包含了颜色、数字、字符串等
media 目录存放图片、音频和视屏等媒体文件
profile 目录存放页面配置、卡片配置等文件
rawfile:被直接打包进应用,不经过编译,也不会被赋予资源文件 ID
开发和打包后结构如下图:
ArkTS 源码编译生成.abc 文件;
resource 目录编译的时候,AppScope 目录下的资源文件会合并到 Module 下面的资源目录下,如果出现重名,只保留 AppScope 目录下的资源文件
配置文件在编译的时候,AppScope 目录下的 app.json5 文件字段会并到 Module 下面的 module.json5 文件,然后生成 HAP 或者 HSP 最终的 module.json。