【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(十五)

本文主要是介绍【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(十五),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

课程地址: 黑马程序员HarmonyOS4+NEXT星河版入门到企业级实战教程,一套精通鸿蒙应用开发

(本篇笔记对应课程第 23 - 24 节)

P23《22.Stage模型-基本概念》

在这里插入图片描述

在这里插入图片描述

一个应用可以有很多的能力,每个能力可以成为一个 Ability Module,比如微信,主要是一个设计APP,其聊天、朋友圈这些能力都属于社交范围,可以放在同一个 Ability Module 中。后来微信又拓展了小程序、视频号等功能,这些功能与社交有了一定不同,可以分别放在不同的 Ability Module 中。

在开发这些 Ability Module 的过程中,势必会存在一些通用的工具、资源、配置文件等,如果每个模块都单独开发与维护,显示是一种浪费。我们会将这些公共的资源抽取出来,放到一个公共的模块,成为 Library Module,是一种共享依赖类型的模块。 Ability Module 就可以引用 Library Module, 使用其中的功能。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

每个module可以单独打包编译,所有 Ability Module 编译时会被编译为 HAP(Harmony Ability Package); Library Module 编译时会被编译为 HSP(Harmony Shared Package),即共享类型的包; HAP类型的包在运行时就可以引用和依赖 HSP 类型的包。

在这里插入图片描述

一个应用的内部可能有各种各样不同的能力,这样就会分为多个不同的 Ability Module,打包后就会有多个 HAP 类型的文件。其中,Entry Module 里主要开发应用进入时的页面、以及整个应用的主能力模块,即最核心的部分。剩余部分即为拓展模块。

一个应用有且只能有一个Entry类型的HAP,可以有多个 Feature 类型的HAP。多个HAP会打包到一起成为一个bundle ,这个 bundle 会有一个名字,可以理解为这个应用的唯一标识。将来还会打包成为一个 .app 类型的文件。

多HAP模式的优势:1、降低各个HAP模块的耦合性;2、用户安装应用时可以选择部分核心功能进行安装

在这里插入图片描述

在这里插入图片描述

在运行期,首先需要有一个 AbilityStage , 在其上展示 Ability , Ability 有不同的类型,常见的有 UIAbility, ExtensionAbility , UIAbility 是包含UI界面的应用组件,除了它还会有 ExtensionAbility ,比如输入法相关的功能。开发主流的应用都是基于 UIAbility 的。

UIAbility 作为UI界面的组件,将来要展示 UI界面,但它不是直接展示UI的。它首先持有一个 WindowStage 的实例对象, WindowStage 与 AbilityStage 类似,都是一个“舞台”,它是组件内窗口的舞台,UI组件内部需要有一个窗口,这个窗口需要展示在一个舞台上, WindowStage 上会持有Window对象,即窗口,窗口里去展示UI界面。

正是由于存在这种“舞台”的机制,ability 和 window 就分隔开了,它们之间就解耦了。将来我们开发一些跨设备的应用时,就可以根据不同设备的窗口单独去做一些处理去适应不同的设备。

在这里插入图片描述

P24《23.Stage模型-应用配置文件》

应用的配置文件分为两类:一类是全局配置文件,放在 AppScope 目录下,如 app.json5 ;另一类就是应用内部的每个模块里,如 entry 模块中的 module.json5 。

在这里插入图片描述

我们打开AppScope下的 app.json5 看一下:

bundleName : 应用的包名,它是应用的唯一标识,一般用域名倒写的方式命名。它是在创建应用时就设置好了。

在这里插入图片描述

在这里插入图片描述

versionCode : 版本信息
versionName : 版本信息
icon : 应用图标,读取的就是media 下的 app_icon 资源
label :

由于是全局配置文件,它读取的也是全局下的 resources 下对应的资源:
在这里插入图片描述

**注意这里的 icon 与 label 不是我们在手机桌面上看到的图标与名称,而是在应用列表中的应用图标与名称,**在这里进入应用列表:

在这里插入图片描述

进入 应用管理:

在这里插入图片描述

滑到最下方,可以看到我们的应用:

在这里插入图片描述

再来看下 entry 模块下的 module.json5 配置文件:

在这里插入图片描述

type: 是该模块的类型,可以有三个值: entry feature shared

在这里插入图片描述
mainElement : 可以理解成当前这个模块的入口,每个模块编译后都是一个HAP文件,都是可以独立运行的,它在独立运行时,需要先创建一个 AblityStage 在这个舞台上去创建一个 Ability。在一个模块内部可以创建多个 Ability。如果这个应用有多个 Ability,默认只能启动一个,默认启动的这个就叫做入口 Ability。mainElement 就是定义入口 Ability 的名字的,它可不是随便起的哦!

在这里插入图片描述
**deviceType :**在一个应用(项目)下可以有多个模块,每个模块将来都会被打包成一个HAP文件,可以给不同的HAP模块设置不同的设备类型

deliveryWithInstall : 前面说了不同的模块可以选择性安装,其中 enter 类型的模块必须安装,而 feature类型的可以选择性安装,deliveryWithInstall 为true就是必须安装,false则是非必须安装

在这里插入图片描述
pages : 当前模块下的所有页面信息,读取的是 profile 下的 main_pages.json 文件中定义的页面信息;

abilities : 模块下如果有多个 abilities,就需要在这里配置 abilities 信息。

由于当前模块 enter 是入口模块,该模块只有一个 ablity 就是入口 ablity ,所以当前 ablity 的 icon 和label就成了应用的 icon 和label 了

在这里插入图片描述

在这里插入图片描述

在这里改不太好,因为 element下是默认的,不同语言环境下还有其配置文件,应该优先改 不同语言环境下的配置。一个个改太麻烦了,我们点击 打开编辑器 按钮,它将多个限定词下的配置项都列出来了,可以直接在这里修改:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

**startWindowBackground:**应用启动时的图标和背景色:

在这里插入图片描述

验证修改效果:

在这里插入图片描述

由于设置有缓存,将设置清理掉再次查看:

在这里插入图片描述
在这里插入图片描述

更多配置信息:
在这里插入图片描述

这篇关于【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(十五)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1081257

相关文章

从入门到精通MySQL联合查询

《从入门到精通MySQL联合查询》:本文主要介绍从入门到精通MySQL联合查询,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下... 目录摘要1. 多表联合查询时mysql内部原理2. 内连接3. 外连接4. 自连接5. 子查询6. 合并查询7. 插入查询结果摘要前面我们学习了数据库设计时要满

从原理到实战深入理解Java 断言assert

《从原理到实战深入理解Java断言assert》本文深入解析Java断言机制,涵盖语法、工作原理、启用方式及与异常的区别,推荐用于开发阶段的条件检查与状态验证,并强调生产环境应使用参数验证工具类替代... 目录深入理解 Java 断言(assert):从原理到实战引言:为什么需要断言?一、断言基础1.1 语

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

Java MQTT实战应用

《JavaMQTT实战应用》本文详解MQTT协议,涵盖其发布/订阅机制、低功耗高效特性、三种服务质量等级(QoS0/1/2),以及客户端、代理、主题的核心概念,最后提供Linux部署教程、Sprin... 目录一、MQTT协议二、MQTT优点三、三种服务质量等级四、客户端、代理、主题1. 客户端(Clien

在Spring Boot中集成RabbitMQ的实战记录

《在SpringBoot中集成RabbitMQ的实战记录》本文介绍SpringBoot集成RabbitMQ的步骤,涵盖配置连接、消息发送与接收,并对比两种定义Exchange与队列的方式:手动声明(... 目录前言准备工作1. 安装 RabbitMQ2. 消息发送者(Producer)配置1. 创建 Spr

解析C++11 static_assert及与Boost库的关联从入门到精通

《解析C++11static_assert及与Boost库的关联从入门到精通》static_assert是C++中强大的编译时验证工具,它能够在编译阶段拦截不符合预期的类型或值,增强代码的健壮性,通... 目录一、背景知识:传统断言方法的局限性1.1 assert宏1.2 #error指令1.3 第三方解决

深度解析Spring Boot拦截器Interceptor与过滤器Filter的区别与实战指南

《深度解析SpringBoot拦截器Interceptor与过滤器Filter的区别与实战指南》本文深度解析SpringBoot中拦截器与过滤器的区别,涵盖执行顺序、依赖关系、异常处理等核心差异,并... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实

MySQL中的索引结构和分类实战案例详解

《MySQL中的索引结构和分类实战案例详解》本文详解MySQL索引结构与分类,涵盖B树、B+树、哈希及全文索引,分析其原理与优劣势,并结合实战案例探讨创建、管理及优化技巧,助力提升查询性能,感兴趣的朋... 目录一、索引概述1.1 索引的定义与作用1.2 索引的基本原理二、索引结构详解2.1 B树索引2.2

从入门到精通MySQL 数据库索引(实战案例)

《从入门到精通MySQL数据库索引(实战案例)》索引是数据库的目录,提升查询速度,主要类型包括BTree、Hash、全文、空间索引,需根据场景选择,建议用于高频查询、关联字段、排序等,避免重复率高或... 目录一、索引是什么?能干嘛?核心作用:二、索引的 4 种主要类型(附通俗例子)1. BTree 索引(