HarmonyOS之应用工程结构与设备模板
一、HarmonyOS APP 工程结构
① 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 工程目录结构如下图所示:
- 结构分析:
- .gradle:Gradle 配置文件,由系统自动生成,一般情况下不需要进行修改。
- entry:默认启动模块(主模块),开发者用于编写源码文件以及开发资源文件的目录。
- entry>libs:用于存放 entry 模块的依赖文件。
- entry>src>main>Java:用于存放 Java 源码。
- entry>src>main>resources:用于存放应用所用到的资源文件,如图形、多媒体、字符串、布局文件等。
- entry>src>main>config.json:HAP 清单文件,详细说明请参考 config.json 配置文件介绍。
- entry>src>test:编写代码单元测试代码的目录,运行在本地 Java 虚拟机(JVM)上。
- entry>.gitignore:标识 git 版本管理需要忽略的文件。
- entry>build.gradle:entry 模块的编译配置文件。
- 资源目录说明如下:
资源目录 | 资源文件说明 |
---|---|
base>element | 包括字符串、整型数、颜色、样式等资源的json文件。每个资源均由json格式进行定义,例如:boolean.json:布尔型 color.json:颜色 float.json:浮点型 intarray.json:整型数组 integer.json:整型 pattern.json:样式 plural.json:复数形式 strarray.json:字符串数组 string.json:字符串值 |
base>graphic | xml类型的可绘制资源,如SVG(Scalable Vector Graphics)可缩放矢量图形文件、Shape基本的几何图形(如矩形、圆形、线等)等 |
base>layout | xml格式的界面布局文件 |
base>media | 多媒体文件,如图形、视频、音频等文件,支持的文件格式包括:.png、.gif、.mp3、.mp4等 |
base>profile | 用于存储任意格式的原始资源文件。区别在于rawfile不会根据设备的状态去匹配不同的资源,需要指定文件路径和文件名进行引用 |
rawfile | 用于存储任意格式的原始资源文件。区别在于rawfile不会根据设备的状态去匹配不同的资源,需要指定文件路径和文件名进行引用 |
③ JS 工程目录结构
- JS 工程目录结构如下图所示:
- common目录:可选,用于存放公共资源文件,如媒体资源、自定义组件和 JS 文档等。
- i18n 目录:可选,用于存放多语言的 json 文件,可以在该目录下定义应用在不同语言系统下显示的内容,如应用文本词条、图片路径等。
- pages 目录:pages 文件夹下可以包含1个或多个页面,每个页面都需要创建一个文件夹(如图中的 index)。页面文件夹下主要包含3种文件类型:css、js 和 hml 文件:
- pages>index>index.hml 文件:hml 文件定义了页面的布局结构,使用到的组件,以及这些组件的层级关系。
- pages>index>index.css 文件:css 文件定义了页面的样式与布局,包含样式选择器和各种样式属性等。
- pages>index>index.js 文件:js 文件描述了页面的行为逻辑,此文件里定义了页面里所用到的所有的逻辑关系,比如数据、事件等。
- resources:可选,用于存放资源配置文件,比如:全局样式、多分辨率加载等配置文件。resources 资源引用示例请参考根据设备分辨率加载图片。
- app.js文件:全局的 JavaScript 逻辑文件和应用的生命周期管理。
二、支持的设备模板
- DevEco Studio 支持包括手机、平板、车机、智慧屏、智能穿戴、轻量级智能穿戴和智慧视觉设备的 HarmonyOS 应用开发,预置了丰富的工程模板,可以根据工程向导轻松创建适应于各类设备的工程,并自动生成对应的代码和资源模板。
- 同时,DevEco Studio 还提供了多种编程语言供开发者进行 HarmonyOS 应用开发,包括 Java、JS 和 C/C++ 编程语言。
- 支持的各设备类型工程模板和对应开发语言的对应关系:
- 跨设备模板,如下表所示:
模板名称 | 支持的设备 | 模版说明 |
---|---|---|
Empty Ability(JS) | Phone、Tablet、TV、Wearable | 使用JavaScript语言开发,用于Phone、TV、Tablet、Wearable设备的Feature Ability模板,展示了基础的Hello World功能 |
Empty Ability(Java) | Phone、Tablet、TV、Wearable、Car | 使用Java语言开发,用于Phone、TV、Tablet、Wearable设备的Feature Ability模板,展示基础的Hello World功能 |
Native C++ | Phone、Car | 使用Java和C++语言开发,用于Car设备的Feature Ability模板,作为HarmonyOS应用调用C++代码的示例工程,界面显示“Hello from JNI C ++ codes” |
[Lite]Empty Ability(JS) | Lite Wearable、Smart Vision | 使用JavaScript语言开发,用于Lite Wearable、Smart Vision设备的Feature Ability模板,包含一个简单的Hello World文本。该模板包含两个组件:div和text,同时演示了数据绑定的使用方式 |
About Ability(JS) | Phone、Tablet、TV、Wearable | 使用JavaScript语言开发,用于Phone、Tablet、TV、Wearable设备的Feature Ability模板。展示了一个应用关于页模板,提供了应用关于信息的实现方式 |
Full Screen Ability(JS) | Phone、Tablet、TV、Wearable | 使用JavaScript语言开发,用于Phone、Tablet、TV、Wearable设备的Feature Ability模板。用于在全屏模式下沉浸式展示图片等内容,支持开发者在此模板基础上进行二次开发,支持手机和平板横竖屏切换显示 |
Grid Ability(JS) | Phone、Tablet、TV | 使用JavaScript语言开发,用于Phone、Tablet、TV设备的Feature Ability模板。展示了一个网格页模板,用于网格应用和状态栏的展示 |
List Tab Ability(JS) | Phone、Tablet、TV、Wearable | 使用JavaScript语言开发,用于Phone、Tablet、Wearable设备的卡片模板。展示了一个列表页,提供了列表展示和多tab切换功能 |
Settings Ability(JS) | Phone、Tablet、TV、Wearable | 使用JavaScript语言开发,用于Phone、Tablet、TV、Wearable设备的Feature Ability模板。展示了一个设置页模板,一般用于App设置页面的实现 |
Splash Screen Ability(JS) | Phone、Tablet、TV | 使用JavaScript语言开发,用于Phone、Tablet、TV设备的Feature Ability模板。展示了一个应用启动页模板,提供了页面跳转以及倒计时器的实现 |
Video Player Ability(Java) | Phone、TV | 使用Java语言开发,用于Phone和TV设备的视频播放应用模板。提供给开发者视频播放的基础能力以及视频在手机和大屏之间流转的能力。支持开发者在此模板基础上进行快速二次开发,构建视频应用 |
- 单设备模板,如下表所示:
模板名称 | 支持的设备 | 模版说明 |
---|---|---|
About Ability(Java) | Phone | 使用Java语言开发,用于Phone设备的Feature Ability模板。为开发者提供应用关于页的示例工程,提供了ScrollView布局以及RichText的使用方法 |
Business Card Ability(Java) | Phone | 使用Java语言开发,用于Phone设备的Feature Ability模板,使用XML布局。展示了一个名片详情页的样例工程,主要由一个ScrollView嵌套的两个ListContainer组成 |
Category Ability(Java) | Phone | 使用Java语言开发,用于Phone设备的Feature Ability模板,使用XML布局,显示分类页效果 |
Category List Ability(Java) | Phone | 使用Java语言开发,用于Phone设备的Feature Ability模板,使用XML布局,该模板由标题栏和单行列表组成,其中单行列表被分为多个分组,单行列表中的每一项由左侧文本和右侧文本组成。该模板还提供了ListContainer和RecycleItemProvider的接口使用方法示例 |
Device Configure Ability(JS) | Phone | 使用JS语言开发,用于Phone设备的Feature Ability模板,使用hml构建界面布局,使用css描述界面样式,使用js进行界面交互,此模板提供了对设备快速配网的能力 |
Device Control Ability(JS) | Phone | 使用JavaScript语言开发,用于Phone设备的Feature Ability模板。支持由开发者编写JavaScription配置文件来生成对应的设备控制界面,支持HiLink和三方云两种设备控制方式,示例配置文件中提供了牙刷、台灯、豆浆机三种样例 |
Financial Ability(Java) | Phone | 使用Java语言开发,用于Phone设备的Feature Ability模板,使用XML布局,展示金融类应用的常用布局,支持轮播卡片、网格展示、列表资讯以及网络图片加载 |
Full Screen Ability(Java) | Phone | 使用Java语言开发,用于Phone设备的FeatureAbility模板,使用XML布局。为开发者提供全屏页的示例工程,使用了Image组件,并实现了横竖屏切换,并保持全屏显示 |
Grid Ability(Java) | Phone | 使用Java语言开发,用于Phone设备的Feature Ability模板,使用XML布局,显示内容为两部分网格表,网格每行显示4个项目,网格内元素可进行拖动排序 |
Image Editor Ability(Java) | Phone | 使用Java语言开发,用于Phone设备的Feature Ability模板,提供裁剪以及调节两种基础图片编辑功能 |
Login Ability(Java) | Phone | 使用Java语言开发,用于Phone设备的Feature Ability模板,使用XML来写布局,显示登录页效果 |
Navigation Ability(Java) | Phone | 使用Java语言开发,用于Phone设备的Feature Ability模板,用来引导用户和呈现信息。采用上图下文的布局,上面为多图滑动布局,下面为文字列表 |
News Ability(Java) | Phone | 使用Java语言开发,用于Phone设备的Feature Ability模板,使用XML布局,展示了标准的设备发现迁移的功能,实现了新闻可以跨设备分享的场景 |
Picture Browser Ability(Java) | Phone | 使用Java语言开发,用于Phone设备的Feature Ability模板,使用XML布局,用于全屏展示图片,支持手势缩放和左右滑动翻页 |
Privacy Statement Ability(Java) | Phone | 用Java语言开发,用于Phone设备的Feature Ability模板,用来呈现多样式的隐私协议文本以及详情跳转 |
Profile Picture List Ability(Java) | Phone | 使用Java语言开发,用于Phone设备的Feature Ability模板,由标题栏、双行列表和底部选项栏构成。该头像列表模板包括两个布局文件,一个是用于提供整体Feature Ability布局,另一个用于提供页面内列表Item布局。该模板演示了标题栏、复杂列表及底部选项栏的使用及数据绑定方式 |
Settings Ability(Java) | Phone | 使用Java开发,用于Phone设备的Feature Ability模板,使用XML布局,由标题栏和一个列表组成。列表部分可设置单行和双行,并分别提供对应的XML布局文件。单行列表由左侧文本和右侧文本组成;双行列表由左侧图标以及双行描述文本和右侧开关组成,并提供开关状态持久化示例 |
Shopping Ability(Java) | Phone | 使用Java语言开发,用于Phone设备的Feature Ability模板,使用XML布局,展示了标准的设备发现迁移的功能,实现了商品可以跨设备分享的场景 |
Splash Screen Ability(Java) | Phone | 使用Java语言开发,用于Phone设备的Feature Ability模板,使用XML布局。展示了一个应用启动页模板,实现了页面跳转 |
OneHop Device Ability(JS) | Phone | 使用JavaScript语言开发,用于Phone设备的Feature Ability模板,支持由开发者编写JavaScription配置文件来生成对应的设备控制界面,示例配置文件中以风扇作为样例,支持碰一碰拉起设备然后进行控制 |
[Lite]Empty Particle Ability(JS) | Router | 使用JavaScript语言开发,用于Router设备的Feature Ability模板,展示了基础的Hello World功能 |
HarmonyOS之应用工程结构与设备模板相关推荐
- IPAD移动端交互原型通用设计方案、ipad元件库、移动元件库、元件列表、设计元件、交互示例、界面模板、设备模板、手势图标、社交界面、音乐、电商、视图控制器、指示器、指纹解锁、手势解锁、rp元件库
IPAD移动端交互原型通用设计方案.ipad元件库.移动元件库.元件列表.设计元件.交互示例.界面模板.设备模板.手势图标.社交界面.音乐.电商.视图控制器.指示器.指纹解锁.手势解锁.rp元件库.平 ...
- Axure经典实例高保真交互下载(微信元件高保真交互库+微信原型交互+安卓设备模板含登录注册引导欢迎流程+ios苹果设备模板)
作品介绍:原型内容包括:微信小程序原件库.视觉规范.基础组件.操作反馈.导航搜索.ios机型设备模板.常用元素.安卓手机设备模板包含注册登录.欢迎引导页等 Axure兼容版本:8.0 和9.0 Axu ...
- axure手机页面设计说明_Axure中基于设备模板的移动端原型设计方法(附IPhoneX和IPhone8最新模板)...
文章作者分享了一种基于设备模板的移动端原型设计方法,相信能够对你的原型设计工作带来帮助,值得马克. 在使用Axure设计移动端原型的应用方面,我总结出了两种常用的方法.第一种是更适合在移动端进行演示的 ...
- 鸿蒙(harmonyOS)应用开发-真机设备API版本查看
如何使用hdc工具查看鸿蒙真机版本 前言 在鸿蒙应用开发中,我们会在真机上进行调试,但是我们需要保证我们选择的API版本大于或等于手机的API版本,否则可能会出现兼容性问题.那么,如何查看真机的API ...
- 开发跨设备的鸿蒙(HarmonyOS) App
为了让更多的人看到本文,请各位读者动动小手,点击右上角[...],将本文分享到朋友圈,thanks! 现在的智能设备种类越来越多,而且这些智能设备的屏幕尺寸.分辨率都不同,例如,比较常见的智能设备有手 ...
- HarmonyOS之跨设备分布式应用调试
一.简介 开发者可以通过 HarmonyOS Interface Definition Language(简称 HarmonyOS IDL)实现不同设备之间的跨进程通信(IPC,Inter-Proce ...
- HarmonyOS之深入解析设备标识符的功能和使用
一.NetworkID ① NetworkID 简介 网络设备节点通信标识符,是分布式软总线提供的一种非永久性标识符.NetworkID 基于 Java 原生的 UUID 接口随机生成,长度为 32 ...
- 华为HarmonyOS 鸿蒙,符合华为鸿蒙HarmonyOS更新的设备
在2019年8月,华为发布了自己开发的操作系统HarmonyOS,也被称为鸿蒙OS.这个新的操作系统是一个新的基于微内核的分布式操作系统,旨在所有设备和方案中提供多样化的用户体验. 最初,该操作系统仅 ...
- 华为鸿蒙2系统harmonyOS,华为鸿蒙系统明年目标覆盖1亿台以上设备
12月16日,华为开发者日暨HarmonyOS 2.0手机开发者Beta版发布活动在北京举行.据华为消费者业务软件部总裁王成录介绍,今年已有120多家应用厂商已开始基于鸿蒙系统进行创新.2021年,华 ...
最新文章
- 150名打工人被AI判定“效率低”遭开除,网友:属实是人工智能,能治工人
- Pandas缺失数据最快定位方式(极少代码快速实现,打死不用循环!!!!!)
- Nginx隐藏主机信息,proxy_hide_header 与fastcgi_hide_header
- 20155203 - 杜可欣 - 预备作业2
- 阿里云短信isp.RAM_PERMISSION_DENY没有访问权限解决办法
- 国科大高级人工智能12-博弈
- sublime Text3安装及配置与解决安装插件失败
- 对对象类型和调用方法属性进行存储以提升反射性能
- 孜然网址导航系统源码v1.0
- f2fs解析(四)f2fs的extent特性
- [基于子串搜索的方法] BNDM算法
- linux 路由跟踪命令_一文掌握linux系统路由跟踪指令traceroute
- 第 10 章 容器监控 - 080 - Weave Scope 容器地图
- C# System.Drawing.SystemColors 系统颜色
- arcmap中图斑面积代表_arcmap计算面积_ArcMap怎么重计算图斑面积?arcmap使用手册_arcmap计算面积...
- 腾讯开放平台 集成qq登录
- Cubieboard2折腾手记(一)
- 基于人脸识别的考勤记录项目
- 基于springboot的在线商城管理系统
- 使用bat脚本运行jar程序 cmd下解决乱码问题
热门文章
- C++ TR1、TR2与boost的关系
- 如何 打包整合linux系统文件夹 用于刷机包等等, 其中包括打包 句号开头 . 开头的文件, 排除系统文件 等...
- ExtJS4为form表单必填项添加红色*标识
- Xamarin简介与Xamarin支持MVC设计模式
- 多线程编程之四——线程的同步
- java创建一个程序把输入字符串的大小写互换_8 编写程序,从键盘接收一个字符串,对字符串中的字母进行大小写互转...
- celeba数据集_轻松学 Pytorch 使用DCGAN实现数据复制
- 三维点云可以导航吗_基于视觉高精定位的“室内AR导航”技术点解析
- 实验9 结构程序设计 6-1 计算两个复数之积
- linux eclipse下qt开发环境搭建,Qt Eclipse开发环境的部署 上篇