0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙应用中的几种常见类型的文件

华为麒麟 来源:鸿蒙技术社区 作者:starLWW 2021-08-20 10:06 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

应用中的几种常见类型的文件

①Ability

Ability 是应用所具备的能力的抽象,一个应用可以包含一个或多个 Ability。

Ability 分为两种类型:FA(Feature Ability,中文名称:元程序)和 PA(Particle Ability,中文名称:元服务)。

FA/PA 是应用的基本组成单元,能够实现特定的业务功能。FA 有 UI 界面,而 PA 无 UI 界面。

②库文件

库文件是应用依赖的第三方代码(例如 so、jar、bin、har 等二进制文件),存放在 libs 目录。

③资源文件

应用的资源文件(字符串、图片、音频等)存放于 resources 目录下,便于开发者使用和维护,详见资源文件的分类。

④配置文件

配置文件(config.json)是应用的 Ability 信息,用于声明应用的 Ability,以及应用所需权限等信息,详见应用配置文件。

⑤pack.info

描述应用软件包中每个 HAP 的属性,由 IDE 编译生成,应用市场根据该文件进行拆包和 HAP 的分类存储。

HAP 的具体属性包括:

delivery-with-install:表示该 HAP 是否支持随应用安装。

“true”表示支持随应用安装;

“false”表示不支持随应用安装。

name:HAP 文件名。

module-type:模块类型,entry 或 feature。

device-type:表示支持该 HAP 运行的设备类型。

⑥HAR

HAR(HarmonyOS Ability Resources)可以提供构建应用所需的所有内容,包括源代码、资源文件和 config.json 文件。

HAR 不同于 HAP,HAR 不能独立安装运行在设备上,只能作为应用模块的依赖项被引用。

HarmonyOS 应用的目录结构

HarmonyOS 应用发布形态为 APP Pack(Application Package,简称 APP),它是由一个或多个 HAP(HarmonyOS Ability Package)包以及描述每个 HAP(Ability 的部署包)属性的 pack.info 文件组成。

Hap 包又可以分为 entry 类型和 feature 类型,每个 Hap 包由:代码、资源、第三方库及应用配置文件组成。

所以我们代码中的 entry 目录其实就是一个应用的 Hap 包,它是 entry 类型的 Hap 包。接下来我们来了解下这些资源。

entry:应用的主模块。一个 APP 中,对于同一设备类型必须有且只有一个 entry 类型的 HAP,可独立安装运行。

feature:应用的动态特性模块。一个 APP 可以包含 0 个、一个或多个 feature 类型的 HAP。只有包含 Ability 的 HAP 才能够独立运行。

HAP 是 Ability 的部署包,HarmonyOS 应用代码围绕 Ability 组件展开,它是由一个或多个 Ability 组成。

setting.gradle 文件用于指定应用包含哪些 entry 或 feature 模块。

build.gradle 文件是应用的环境配置文件,如指定编译应用程序使用的 sdk 版本,依赖外部 maven 库等。

gradle 目录是 gradle 的配置文件,由系统自动生成,一般情况下不需要进行修改。

其中gradle》wrapper》gradle-wrapper.properties 文件一般用于指定应用使用的 gradle 版本。

build 目录是在编译构建过程中生成的,该目录中主要包含该 entry 编译生成的 hap 包及其对应的描述文件 pack.info,以及用于索引所有资源文件的 ResourceTable 文件。

特别注意的是:所有资源如包括控件名称、字符串常量、动画资源、长度资源、布局资源、图片、音视频资源等都将在 ResourceTable 文件中生成唯一的静态整型索引常量。

通过这个索引可以访问到具体的资源,如 Java 代码中得到名称为 ability_main.xml 布局文件的方法:ResourceTable.Layout_ability_main。

entry 是该应用的主模块,其目录下包含 build、libs、src 目录和一个主要的 build.gradle 文件。

entry 中各目录及文件含义如下:

①entry》libs 目录下用于存放第三方的 jar 包,是该 entry 模块对第三方类库的存放目录。

②entry》src 目录是该 entry 模块的所有源程序目录,我们重点关注该目录中的 main 目录和 config.json 文件。

main 目录下包含 java 和 resources 目录。

entry》src》main》java 包括应用中所有的 java 文件,以包的形式进行组织。

一个可视化的 Ability(FA)的呈现包含的 3 个文件,其中的 Slice 和 Ability 都在 main 目录下。

该目录下还可以添加其他业务逻辑处理的 java 类文件,如实现网络操作、数据库操作等业务类,用户自定义的工具类等。需要注意的是,实现一个可视化的 Ability,Slice 并不是必须的。

entry》src》main》resources 目录是所有资源文件所在的目录。

resources 目录包括两大类目录:

一类是 base 目录与限定词目录,目录中的资源文件会被编译成二进制文件,并赋予资源文件 ID(能被 ResourceTable 索引,通过指定资源类型(type)和资源名称(name)来引用)。

另一类是 rawfile 目录,目录中的资源文件会被直接打包进应用,不经过编译,也不会被赋予资源文件 ID(不能被 ResourceTable 索引,通过指定文件路径和文件名来引用)。

resources》base》element:表示字符串、整型数、颜色、样式等常量资源,采用相应的JSON文件来表示,可以在其他地方被引用。

默认只包含一个string.json文件,程序员可根据自己的需要添加其他类型的文件,如图 6 所示:

110e1b92-00ef-11ec-9bcf-12bb97331649.jpg

图 6

但文件名称建议和如下文件名称一致:

strings.json:字符串值资源(默认包含)

boolean.json:布尔型资源

color.json:颜色资源

float.json:浮点型资源

intarray.json:整型数组资源

integer.json:整型资源

pattern.json:样式资源

plural.json:复数形式资源

strarray.json:字符串数组资源

resources》base》graphic:表示可绘制资源,如 SVG(Scalable Vector Graphics)可缩放矢量图形文件、Shape 基本的几何图形(如矩形、圆形、线等)等。

用 xml 文件来表示,比如我们项目中设置的圆角按钮、按钮颜色等都是通过引用这里的资源来统一管理的:

base》graphic:xml 类型的可绘制资源。

resources》base》layout:表示布局资源,用 xml 文件来表示。

resources》base》media:表示媒体资源,包括图片、音频、视频等非文本格式的文件,支持的文件格式包括:.png、.gif、.mp3、.mp4 等。

resources》限定词目录:en_…,如 en_element、zh_element、en_GB-vertical-car-mdpi 等。限定词目录需要开发者自行创建。

目录名称由一个或多个表征应用场景或设备特征的限定词组合而成,可以包含移动国家码和移动网络码、语言、文字、横竖屏、设备类型、颜色模式等限定词。

对应限定词的取值必须与当前的设备状态完全一致,该目录才能够参与设备的资源匹配。

例如,限定词目录“zh_CN-car-ldpi”不能参与“en_US”设备的资源匹配。

resources》rawfile/profile 目录:用于存储任意格式的原始资源文件。允许程序员创建多层子目录,目录名称可以自定义,目录下也可以自由放置各类资源文件。该目录的文件不会根据设备状态去匹配不同的资源。

entry》src》main》config.json 文件是 entry(或 feature)的配置文件,由“app”、“deviceConfig”和“module”三个部分组成,缺一不可。

其中“app” 表示应用的全局配置信息,同一个应用的不同 HAP 包的“app”配置必须保持一致;“deviceConfig”表示应用在具体设备上的配置信息;“module”表示 HAP 包的配置信息。该标签下的配置只对当前 HAP 包生效。

③entry》build.gradle:entry 模块的编译配置文件,包括 entry 使用的 SDK 版本、所依赖的资源(如 maven 库、Jar 类库等)。

④entry》src》test:编写代码单元测试代码的目录,运行在本地 Java 虚拟机(JVM)上。

⑤entry》.gitignore:标识 git 版本管理需要忽略的文件。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 华为
    +关注

    关注

    218

    文章

    35806

    浏览量

    260854
  • 鸿蒙系统
    +关注

    关注

    183

    文章

    2642

    浏览量

    69375
  • HarmonyOS
    +关注

    关注

    80

    文章

    2147

    浏览量

    35623

原文标题:一文搞懂鸿蒙OS应用的目录结构

文章出处:【微信号:Huawei_Kirin,微信公众号:华为麒麟】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【HarmonyOS 5】鸿蒙常见的标题栏布局方案

    【HarmonyOS 5】鸿蒙常见的标题栏布局方案 ##鸿蒙开发能力 ##HarmonyOS SDK应用服务##鸿蒙金融类应用 (金融理财# 一、问题背景:
    的头像 发表于 07-11 18:30 679次阅读
    【HarmonyOS 5】<b class='flag-5'>鸿蒙</b>中<b class='flag-5'>常见</b>的标题栏布局方案

    【HarmonyOS 5】鸿蒙中进度条的使用详解

    【HarmonyOS 5】鸿蒙中进度条的使用详解 ##鸿蒙开发能力 ##HarmonyOS SDK应用服务##鸿蒙金融类应用 (金融理财# 一、HarmonyOSProgress进度
    的头像 发表于 07-11 18:26 768次阅读
    【HarmonyOS 5】<b class='flag-5'>鸿蒙</b>中进度条的使用详解

    UPS电源—选对UPS电源类型,这招绝了

    在选择UPS(不间断电源)类型时,需综合考虑设备类型、功率需求、运行环境以及对电力保障的具体要求。下面聊一下几种常见的UPS电源类型及其适用
    的头像 发表于 06-24 18:54 532次阅读
    UPS电源—选对UPS电源<b class='flag-5'>类型</b>,这招绝了

    常见的温湿度传感器类型?

    温湿度传感器是一种用于测量环境温度和湿度的设备,广泛应用于工业、农业、气象等领域。以下是几种常见的温湿度传感器类型及其优缺点: 电容式湿度传感器 电容式湿度传感器基于介电常数与相对湿度之间的关系来
    发表于 06-24 09:24

    使用DevEcoStudio 开发、编译鸿蒙 NEXT_APP 以及使用中文插件

    应用调试 5.1 模拟器调试 点击工具栏的 Tools > Device Manager 图标 在弹出窗口中点击 New Emulator 选择设备类型和系统版本,点击 Next 完成创建
    发表于 06-11 17:18

    在EMC,MOSFET 栅极驱动电路常见类型

    在EMC,MOSFET 栅极驱动电路常见类型
    的头像 发表于 04-14 16:48 945次阅读
    在EMC<b class='flag-5'>中</b>,MOSFET 栅极驱动电路<b class='flag-5'>常见</b><b class='flag-5'>类型</b>

    贴片电容有哪些类型?在电子产品应用各自发挥哪些用途?

    随着电子产品向着更高集成度、小型化和高性能方向发展,贴片电容作为电子元器件不可或缺的一环,其应用范围也越来越广泛。不同类型的贴片电容针对各种应用场景具有各自独特的优势和功能。本文将介绍几种
    的头像 发表于 03-24 17:59 966次阅读
    贴片电容有哪些<b class='flag-5'>类型</b>?在电子产品应用<b class='flag-5'>中</b>各自发挥哪些用途?

    常见网络负载均衡的几种方式

    常见网络负载均衡的几种方式包括:DNS负载均衡、反向代理负载均衡、IP负载均衡、应用层负载均衡、链路层负载均衡。以下是小编对几种常见的网络负载均衡方式及其详细展开介绍。
    的头像 发表于 03-06 11:14 1106次阅读

    分布式存储有哪几种类型?

    分布式存储有哪几种类型?分布式存储系统是一种将数据分散存储在多台独立节点上的技术,根据数据模型可分为键值存储、列式存储、文档存储和图形存储等类型;按数据存储单位可分为基于文件、块和对象的存储;按
    的头像 发表于 02-20 11:00 1144次阅读

    常见PLC通讯协议的类型

    可编程逻辑控制器(PLC)作为工业自动化领域的核心设备,其通讯协议的选择对于系统的整体性能和兼容性至关重要。本文将详细介绍几种常见的PLC通讯协议,包括Modbus、Ethernet/IP、Profinet、CAN总线以及OPC UA,并对它们进行详细的比较,以期为相关技
    的头像 发表于 02-03 14:30 3135次阅读

    如何导出交换机的配置文件

    在网络管理,导出交换机的配置文件是一项关键任务,它有助于备份、审计、迁移或恢复网络配置。本文将详细介绍如何导出交换机配置文件,涵盖多种方法,适用于不同场景和需求。文章内容将围绕几种
    的头像 发表于 02-02 17:20 6582次阅读

    常见的有源变压器有哪几种

    麻烦问一下大家,我们常见的有源变压器有哪几种?最关键的问题是,有源变压器和无源变压器建模方法相同吗?有源变压器如何进行建模?真心求教,在线等,谢谢了。
    发表于 01-22 07:47

    焊接技术的几种常见类型

    焊接技术是一种将两个或多个金属部件通过高温或其他方法连接在一起的工艺。以下是几种常见的焊接技术类型,每种技术都有其特定的应用场景和优缺点: 电弧焊(Arc Welding) 描述 :电弧焊是一种
    的头像 发表于 01-19 13:54 3305次阅读

    AWG电缆的常见材料类型

    美国线规(AWG)是一种用于指定电线直径的标准化系统,它在美国广泛使用。AWG系统基于电线的直径,数字越小,电线越粗。电线的材料类型对于其性能、成本和应用至关重要。以下是一些AWG电缆的常见材料类型
    的头像 发表于 01-13 17:19 1736次阅读

    鸿蒙Flutter实战:14-现有Flutter 项目支持鸿蒙 II

    文件 .fvm/, vscode/settings.json 文件 ohos_app/pubsec.yaml 的 dependency_overrides, 仅添加需要鸿蒙化的三方库
    发表于 12-26 14:59