2. HarmonyOS工程结构
HarmonyOS工程结构
HarmonyOS App工程结构
在创建第一个Project并且成功运行之后,了解Project的结构就很有必要了。由于暂且开始Java开发是个人的主要方式,因此这里先了解Java工程项目结构。
APP一些概念
HarmonyOS应用的发布形态叫做APP Pack即Application Package。一个APP由一个或者多个Ability Package(HarmonyOS Ability Package)及描述app属性的pack.info文件组成。
HAP
HAP全称HarmonyOS Ability Package。一个HAP就是DevEco Studio中的一个Module,即由源码,资源,第三方库等组成。HAP可以分为Entry和Feature两种类型。
- Entry:应用/服务的主模块,可以独立运行。一个APP结构中,可以包含一个或多个Entry类型的HAP。
- Feature:应用/服务的动态特性模块。一个APP结构中可以包含一个或多个Feature的HAP,也可以不包含。
了解以下两个概念
Ability
HAP是由若干个Ability组成。Ability是应用的重要组成部分,是应用所具备能力的抽象。Ability可以的分为两类,Feature Ability(FA,元程序)和Particle Ability(PA,元服务)。FA有UI界面,可以进行交互。PA没有UI界面。
- FA代表了有界面的Ability,用于与用户进行交互。
- PA表示了无界面的Ability,主要配合FA使用。可以提供后台计算服务,或者提供数据仓储保存等功能。
了解Android开发概念同学肯定就比较熟悉了。FA类似Android中的Activity,有界面,可交互。PA类似Android中的Service,没有界面。
AbilitySlice
切片,是一个可视化Ability的基本组织单元。一个FA可以包含一个或多个AbilityAlice。每个AbilityAlice可以包含自己内部的交互及业务执行逻辑。
了解Android开发概念同学肯定就比较熟悉了。AbilitySlice类似Android中的Fragment。
工程结(Java开发)
先来看下创建的工程结构。由于目前API 版本支持到7的Java工程,还不知道API 8是否会在结构上做出改变,因此这里的Java工程结构是API 4 ~ API 7 的结构。
- .gradle 目录是有IDE生成,因此在开发过程中不需要修改。
- .idea 是IDE项目创建的工程目录及环境配置。
- build目录是IDE编译过程的中间产物。
- entry 默认启动模块(主模块),保存编写源码文件以及开发资源文件的目录。
- libs:用于存放entry模块的依赖文件。
- src>main>Java:用于存放Java源码。
- src>main>Java>com>sanren1024>ohos>slice>MainAbilitySlice:承载单个页面的具体逻辑实现和界面UI。
- src>main>Java>com>sanren1024>ohos>MyApplication:应用/服务的入口。
- src>main>resources:用于存放应用/服务所用到的资源文件,如图形、多媒体、字符串、布局文件等。
- src > main > config.json:模块配置文件,主要包含HAP包的配置信息、应用在具体设备上的配置信息以及应用的全局配置信息。
resources目录
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目录是项目创建就存在的目录。当app需要使用的resources资源目录中没有与之匹配的限定词目录存在时,会自动引用到该目录中的资源文件。
- 限定词目录则需要开发者自己创建。
base目录
不论是base目录还是限定词目录,再目录下都可以创建资源目录,如 element,media,animation,layout,graphic,profile。
- element 表示元素资源,所有数据都使用json格式。
- boolean 布尔型,可以创建与类型一致的json文件名,可以定义在boolean.json中。
- color 颜色,与之对应,定义在color.json文件中。
- float 浮点型,定义在float.json文件中。
- intarray 整型数组,定义在intarray.json文件中。
- integer 整型,定义在integer.json文件中。
- pattern 样式,定义在pattern.json文件中。
- plural 复数形式,定义在plural.json文件中。
- strarray 字符串数组,定义在strarray.json文件中。
- string 字符串,定义在string.json文件中。
- media 表示媒体资源,包括图片,音视频等非文本格式的文件。
- animation 表示动画资源,采用xml文件格式。
- layout 表示布局资源,采用xml文件格式。
- graphic 表示可绘制资源,采用xml文件格式。
- profile 表示其他类型文件,以原始文件形式保存。
限定词目录
限定词目录有组合的顺序:_移动国家码_移动网络码-语言_文字_国家或地区-横竖屏-设备类型-颜色模式-屏幕密度_。
限定词的连接方式:语言、文字、国家或地区之间采用下划线(_)连接,移动国家码和移动网络码之间也采用下划线(_)连接,除此之外的其他限定词之间均采用中划线(-)连接。例如:zh_Hant_CN、zh_CN-car-ldpi。
-
在为设备匹配对应的资源文件时,限定词目录匹配的优先级从高到低依次为:移动国家码和移动网络码 > 区域(可选组合:语言、语言_文字、语言_国家或地区、语言_文字_国家或地区)> 横竖屏 > 设备类型 > 颜色模式 > 屏幕密度。
-
如果限定词目录中包含移动国家码和移动网络码、语言、文字、横竖屏、设备类型、颜色模式限定词,则对应限定词的取值必须与当前的设备状态完全一致,该目录才能够参与设备的资源匹配。例如,限定词目录“zh_CN-car-ldpi”不能参与“en_US”设备的资源匹配。
更多推荐
所有评论(0)