在创建第一个Project并且成功运行之后,了解Project的结构就很有必要了。由于暂且开始Java开发是个人的主要方式,因此这里先了解Java工程项目结构。
HarmonyOS应用的发布形态叫做APP Pack即Application Package。一个APP由一个或者多个Ability Package(HarmonyOS Ability Package)及描述app属性的pack.info文件组成。
HAP全称HarmonyOS Ability Package。一个HAP就是DevEco Studio中的一个Module,即由源码,资源,第三方库等组成。HAP可以分为Entry和Feature两种类型。
了解以下两个概念
Ability
HAP是由若干个Ability组成。Ability是应用的重要组成部分,是应用所具备能力的抽象。Ability可以的分为两类,Feature Ability(FA,元程序)和Particle Ability(PA,元服务)。FA有UI界面,可以进行交互。PA没有UI界面。
了解Android开发概念同学肯定就比较熟悉了。FA类似Android中的Activity,有界面,可交互。PA类似Android中的Service,没有界面。
AbilitySlice
切片,是一个可视化Ability的基本组织单元。一个FA可以包含一个或多个AbilityAlice。每个AbilityAlice可以包含自己内部的交互及业务执行逻辑。
了解Android开发概念同学肯定就比较熟悉了。AbilitySlice类似Android中的Fragment。
先来看下创建的工程结构。由于目前API 版本支持到7的Java工程,还不知道API 8是否会在结构上做出改变,因此这里的Java工程结构是API 4 ~ API 7 的结构。

resources目录结构更加复杂,,如下结构所示。
resources
|---base // 默认存在的目录
| |---element
| | |---string.json
| |---graphic
| | |---background_ability_main.xml
| |---layout
| | |---ability_main.xml
| |---media
| | |---icon.png
| |---profile
|---en_GB-vertical-car-mdpi // 限定词目录示例,需要开发者自行创建
| |---element
| | |---string.json
| |---graphic
| | |---background_ability_main.xml
| |---layout
| | |---ability_main.xml
| |---media
| | |---icon.png
| |---profile
|---en // 默认存在的目录
| |---element
| | |---string.json
|---rawfile // 默认存在的目录
|---zh // 默认存在的目录
| |---element
| | |---string.json
刚创建的Project resources目录下默认带有 base,en,zh,rawfile 目录。
base目录
不论是base目录还是限定词目录,再目录下都可以创建资源目录,如 element,media,animation,layout,graphic,profile。
限定词目录
限定词目录有组合的顺序:_移动国家码_移动网络码-语言_文字_国家或地区-横竖屏-设备类型-颜色模式-屏幕密度_。
限定词的连接方式:语言、文字、国家或地区之间采用下划线(_)连接,移动国家码和移动网络码之间也采用下划线(_)连接,除此之外的其他限定词之间均采用中划线(-)连接。例如:zh_Hant_CN、zh_CN-car-ldpi。
在为设备匹配对应的资源文件时,限定词目录匹配的优先级从高到低依次为:移动国家码和移动网络码 > 区域(可选组合:语言、语言_文字、语言_国家或地区、语言_文字_国家或地区)> 横竖屏 > 设备类型 > 颜色模式 > 屏幕密度。
如果限定词目录中包含移动国家码和移动网络码、语言、文字、横竖屏、设备类型、颜色模式限定词,则对应限定词的取值必须与当前的设备状态完全一致,该目录才能够参与设备的资源匹配。例如,限定词目录“zh_CN-car-ldpi”不能参与“en_US”设备的资源匹配。