Harmony 开发基础——Harmony 学习笔记

前言

最近跟着3.6 HAR | 3.6 HAR | EBG2021CCHW1100031 课程页面 | Huawei iLearningX学习了鸿蒙开发基础,做了一下笔记。

MindMap

一 APP

HarmonyOS 的应用软件包以APP Pack, 有一个或多个HAP 以及描述每个HAP数学的pack.info组成。HAP是Abilities的部署包,代码围绕Ability组件展开。

1. 组成

  1. 一个HAP 有 代码、资源、第三方库及应用配置文件组成的模块包,有两种模块包 entry 和 feature。

    1. entry:主模块,一个APP中,对于同一设备类型有且只有一个entry类型的HAP,可以独立安装运行。
    2. feature:动态特新模块,一个APP可包含一个或多个feature类型的HAP,可不包含。只有包含Ability的HAP能独立运行。
  2. HAP由零个或一个或多个Ability组成。

2. 结构

二 Ability

  1. 应用能力的抽象,一个应用包含一个或多个Ability。两种类型:FA和PA,是应用的基本单元,实现特定功能,FA有UI,PA无UI。(欸,是不是很像前端和后端啊)
  2. 库文件是应用的第三方代码。
  3. 配置文件包含Ability的配置信息,用于声明Ability,应用所需权限等。

1. pack.info

  1. 描述HAP属性,由IDE生成,HAP具体属性包括:

    1. delivery-with-install: 表示HAP是否支持随应用安装。true表示支持。
    2. name:HAP文件名。
    3. module-type:模块类型,entry或feature。
    4. device-type:支持该HAP运行的设备类型。

三 库文件

HAR全名HarmonyOS Ability Resources,提供构建文件所需内容,包括源代码、资源文件、和config.json 文件。不同于HAP,不能独立安装运行,只能被引用。

四 资源文件

1. 应用资源文件

放在resourece目录下,便于开发者实用和维护。包括base目录和限定词目录。

2. resource 目录结构

3. 限定词目录

由表征应用场景或设备特征的限定词组合,包括语言,文字,国家或地区,横竖屏,设备类型和屏幕密度六个维度。限定词之间通过下划线或者中划线“-” 连接。

限定词目录下包含限定词文件,分为三类,element,media,animation(动画资源)。

4. base目录限定词引用

  1. 在应用开发的hml和js文件使用$r语法,可以对JS模块内的resources目录下的json资源进行格式化,获取相应的资源内容。
  2. 对于js页面对象的属性$r, 可以使用string类型的key参数,返回值为string类型。

5. 系统资源文件

五 配置文件

每个HAP根目录下存在一个“config.json” 配置文件。主要内容:

  1. 应用的全局配置信息,包含应用的包名、生产厂商、版本号等。
  2. 在具体设备的配置信息,包含应用的备份恢复、网络安全等。
  3. HAP包的配置信息,每个Ability必须定义的基本属性,一些权限.

1. 配置文件的内部结构

由 app、deviceConfig、module 三个部分组成。

2. app 对象的内部结构

包含应用的全局配置信息。

3. deviceConfig 对象的内部结构

包含具体设备上的应用配置信息,可以包含以下图中的属性。

phone 对象

4. module 对象的内部结构

包含HAP包的配置信息。

1) distro对象

HAP发布的具体描述。

2) js对象的内部结构

表示基于JS UI开发的JS模块集合

3) abilities 对象

核心属性

次要属性

skills 对象的内部结构

表示接收Ability能够接收的Intent的特征。

forms 对象的内部结构

表示服务卡片的属性。

5. HAP与HAR的配置文件的合并

如果应用模块中调用了HAR,在编译构建HAP时,需将HAP的config.json 文件与一个或多个HAR的config.json 文件,合并为一个config.json 文件。在合并过程中,不同文件的同一个标签的取值可能发生冲突,此时,需要通过配置mergeRule 来解决冲突。

合并规则

  1. HAP与HAR的config.json 文件合并时,需要将HAR的配置信息全部合并到HAP的配置文件。
  2. HAP的优先级总是高于HAR,当HAP依赖多个HAR时,先加载的优先级高于后加载的HAR。

六 HAR

1. 在工程中添加Module

Module 是 HarmonyOS 应用的基本功能单元,包含源代码、资源文件、第三方库及应用清单文件,每一个Module都可以独立进行编译和运行。一个应用通常包含一个或多个Module,Module分Ability和Library(HarmonyOS Library 和 Java Library)两种类型。

2. Module 类型

  1. 在一个APP中,对于同一类型设备有且只有一个Entry Module,其余Module 的类型均为Feature。
  2. 创建Module遵循以下原则:
    1. 若新增Module的设备类型已经存在,则设为Feature。
    2. 否则,自动设为Entry。

3. 创建HarmonyOS库

1)创建库Module

2)将库模块编译为HAR

  1. 利用Gradle 可以将HarmonyOS Library库模块构建为HAR包。
  2. 构建HAR包的方法:在Gradle 构建任务中,双击debugHarmonyHar 或 releaseHarmonyHar任务,构建Debug类型或Release类型的HAR。

3)编译并输出库模块

4. 发布Har包到Maven 仓

借助Gradle 提供的Mave-publish 插件,可以将Har包发布到本地或远程Maven 仓,方法如下:

  1. 在工程根目录下,New > File,创建一个以 .grdale 结尾的文件。
  2. 在创建的grdle文件中添加代码。
  3. 在Har模块的build.grdle 中,添加HAR发布脚本,添加完成后,请点击Sync Now进行同步。
  4. 同步完成后,在Gradle任务中添加publishing 的任务列表,并执行pulishMavenPublicationToMavenRepository 任务,将HAR包发布到指定的Maven地址。

5. 为应用模块添加依赖

在应用模块调用HAR,常用的添加依赖的方式有两种:

  1. 调用同一个工程中的HAR:HAR包和应用模块在同一个工程,打开应用模块的build.gradle文 件,在dependencies闭包中,添加如下代码。添加完成后,请点击Sync Now同步工程。

    1. dependencies {
      implementation project(":mylibrary")
      }
      
  2. 调用Maven仓中的HAR:无论Har包是本地Maven仓还是远程Maven仓,均可以在工程的 build.gradle的allprojects闭包中,添加HAR所在的Maven仓地址。

    1. repositories {
      maven {
      url 'file://D:/01.localMaven/' }}
      

后话

爱护肠胃吧,本来能早点写完的,但是因为肠胃一直拖着。。。。

Harmony 开发基础——Harmony 学习笔记相关推荐

  1. 零基础学习Java开发,这些学习笔记送给你

    因为Java具备很多特点,并且在企业中被广泛应用为此很多小伙伴选择学习Java基础开发,但是零基础学习Java技术开发需要我们制定Java学习路线图对于我们之后的学习会非常有帮助. 零基础学习Java ...

  2. 《疯狂前端开发讲义jQuery+Angular+Bootstrap前端开发实践》学习笔记

    <疯狂前端开发讲义jQuery+Angular+Bootstrap前端开发实践>学习笔记 二〇一九年二月十三日星期三2时28分54秒 前提:本书适合有初步HTML.CSS.JavaScri ...

  3. PHPWeb开发入门体验学习笔记

    PHPWeb开发入门体验学习笔记 4 一.PHP web应用开发须知 1.入门要点 程序员三个阶段:码农(速成技能)->工程师(长期知识)->专家(研究论文) 编程三要素:声明变量(系统. ...

  4. python基础知识学习笔记(1)

    python 基础知识学习笔记(1) 总结一下Python基础知识,以防忘记. 文章目录 python 基础知识学习笔记(1) 一.起步 1.python安装与编译环境 二.变量和简单数据类型 三.列 ...

  5. oracle数据库基础知识总结,oracle数据库基础知识学习笔记

    oracle数据库基础知识学习笔记 一.oracle数据库类型: Char:  字符型(最大长度2000,定长.不足时以空格补充) Varchar2:字符型 最大长度 4000,变长,实际长度由存储的 ...

  6. 黑马程序员最新版JavaWeb基础教程-学习笔记

    da@黑马程序员最新版JavaWeb基础教程-学习笔记 day06-HTML&CSS HTML HTML(HyperTest Markup Language):超文本标记语言 是一门语言,所有 ...

  7. 微服务基础知识点学习笔记(持续更新)

    微服务基础知识点学习笔记(持续更新) Conrtoller层 整体包括:HTTP协议,JavaWeb三大组件(filter.servlet.listener).SpringMVC(SpringMVC的 ...

  8. K8s基础知识学习笔记及部分源码剖析

    K8s基础知识学习笔记及部分源码剖析 在学习b站黑马k8s视频资料的基础上,查阅了配套基础知识笔记和源码剖析,仅作个人学习和回顾使用. 参考资料: 概念 | Kubernetes 四层.七层负载均衡的 ...

  9. P2P网络基础(学习笔记)

    P2P网络基础(学习笔记) 基本概述 P2P与C/S架构 P2P网络的特点 P2P网络的主要功能 P2P网络的分类 集中式 全分布式非结构化 全分布式结构化 混合式 比特币网络 P2P网络的应用 基本 ...

最新文章

  1. python-常用函数模块学习-subprocess
  2. Web框架 — Flask
  3. html5如何实现播放下一首,使用HTML5 SoundCloud播放器小部件如何以编程方式跳到另一首曲目而不会导致播放第二不需要的曲目?...
  4. java future接口_java Future 接口介绍
  5. ibm量子计算机应用,科学网—IBM量子计算机获重大突破 可进行百万项计算
  6. mysql数据库永久链接_PHP使用数据库永久连接方式(mysql_pconnect)操作MySQL的是与非...
  7. java2月天数_java根据当前日期+指定天数(月份...)得到相应日期,计算两日期之差...
  8. MeeGo、Ubuntu Touch、Sailfish、Tizen系统历史关系
  9. 随手记---字符和词汇的区别
  10. Java的主流加密方式——简介
  11. API函数的调用过程
  12. 设置谷歌浏览器深色黑色背景
  13. 信号处理基础——傅里叶变换与短时傅里叶变换
  14. python爬取美女图片_Python 爬取美女图片
  15. echarts绘制地图
  16. HTML+CSS静态页面网页设计作业——甜品奶茶店(19页) HTML5网页设计成品_学生DW静态网页设计_web课程设计网页制作
  17. mysql8设置局域网访问
  18. 经济基础知识(初级)【8】
  19. DARTS 可微 架构搜索
  20. 什么是静态网站生成器

热门文章

  1. 美容护理行业的暴利时代即将结束?
  2. 域格9x07模块问题日志抓取方法
  3. PHP连接数据库实现简单的登录页面
  4. 错误:-[UIKBBlurredKeyView candidateList]: unrecognized selector sent to instance
  5. Perl语言开发工具(持续整理)
  6. java实现电子发票中的发票税号等信息识别的几种可用方案
  7. 多张图片或PDF电子发票怎么用PYTHON打印在一张A4纸上
  8. Swagger2 (1)到此一游集成spring boot
  9. ios 英文字体连体 five 的问题解决方案
  10. 字符串匹配:Sunday算法