codecamp

鸿蒙OS HarmonyOS工程介绍

HarmonyOS APP工程结构

在进行 HarmonyOS 应用开发前,您应该掌握 HarmonyOS 应用的逻辑结构。

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

一个 HAP 在工程目录中对应一个 Module,它是由代码、资源、第三方库及应用清单文件组成,可以分为 Entry 和 Feature 两种类型。

  • Entry:应用的主模块。一个 APP 中,对于同一设备类型必须有且只有一个 entry 类型的HAP,可独立安装运行。
  • Feature:应用的动态特性模块。一个 APP 可以包含一个或多个 feature 类型的 HAP,也可以不含。

HAP 是 Ability 的部署包,HarmonyOS 应用代码围绕 Ability 组件展开,它是由一个或多个 Ability 组成。Ability 分为两种类型:FA(Feature Ability)和 PA(Particle Ability)。FA/PA 是应用的基本组成单元,能够实现特定的业务功能。FA 有 UI 界面,而 PA 无 UI 界面。

点击放大

工程目录结构

Java工程目录结构

Java 工程目录结构如下图所示。

img

.gradle:Gradle 配置文件,由系统自动生成,一般情况下不需要进行修改。

  • entry

:默认启动模块(主模块),开发者用于编写源码文件以及开发资源文件的目录。

  • entry>libs:用于存放 entry 模块的依赖文件。
  • entry>.gitgnore:标识 git 版本管理需要忽略的文件。
  • entry>build.gradle:entry 模块的编译配置文件。
  • entry>src>main>Java:用于存放 Java 源码。
  • entry>src>main>resources:用于存放资源文件。
  • entry>src>main>config.json:HAP 清单文件,详细说明请参考config.json清单文件介绍
  • entry>src>test:编写测试文件的目录。

JS工程目录结构

JS 工程目录结构如下图所示。

img

  • pages 目录:

pages 文件夹下可以包含 1 个或多个页面,每个页面都需要创建一个文件夹(如图中的 index)。页面文件夹下主要包含 3 种文件类型:css、js 和 hml 文件。

  • pages > index > index.hml文件:hml 文件定义了页面的布局结构,使用到的组件,以及这些组件的层级关系。
  • pages > index > index.css文件:css 文件定义了页面的样式与布局,包含样式选择器和各种样式属性等。
  • pages > index > index.js文件:js 文件描述了页面的行为逻辑,此文件里定义了页面里所用到的所有的逻辑关系,比如数据、事件等。

  • app.js文件:全局的 JavaScript 逻辑文件和应用的生命周期管理。
鸿蒙OS 运行Hello World
鸿蒙OS 支持的设备模板和编程语言
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

鸿蒙OS 开发

鸿蒙OS 术语

鸿蒙OS Java API参考

鸿蒙OS ohos.aafwk.ability

鸿蒙OS ohos.aafwk.abilityjet.activedata

鸿蒙OS ohos.aafwk.content

鸿蒙OS java.lang

鸿蒙OS java.Util

鸿蒙OS java.Util class

鸿蒙OS ohos.data.dataability

鸿蒙OS ohos.data.dataability class

鸿蒙OS ohos.agp.components

鸿蒙OS ohos.agp.components interface

鸿蒙OS ohos.agp.components class

鸿蒙OS ohos.global.configuration

鸿蒙OS java.io

鸿蒙OS ohos.data.resultset

鸿蒙OS ohos.data.resultset interface

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }