【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:**应用启动时的图标和背景色:

在这里插入图片描述

验证修改效果:

在这里插入图片描述

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/31311.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序常用 API

微信小程序提供了丰富的 API,用于实现各种功能,如网络请求、数据缓存、地理位置获取、用户授权等。以下是微信小程序常用 API 的简介: 1. wx.request wx.request 用于发起 HTTP 网络请求,用于获取服务器数据。它支持 GET、POST、…

领域驱动设计(DDD)微服务架构模式总结

part1. Domain Driven Design(Strategic Design,Tactical Design) Top Down focus on business or activityy domain Ubiquitous Language:统一语言 Tactical Design Tools:战术性设计工具 Implementing Domain Driven Design(Event storming,DDD in code) DDD总结…

阿里巴巴橙点同学达摩院认证证书

网址:https://orange-class.com/ 为竞争激烈的职业做好充分的准备,无需相关经验立即开始学习。 阿里达摩院组织背书认证。 内容包括八个职业方向,涉及AI、开发、营销、设计等不同岗位: 其中,AI的高级认证情况如下&…

深度学习之forward

在深度学习代码中, f o r w a r d forward forward函数主要完成了神经网络的前向传播( f o r w a r d p r o p a g a t i o n forward\ propagation forward propagation)过程。 f o r w a r d forward forward方法定义了模型的前向传播过程&…

Nginx 配置文件(nginx.conf)中的常用参数

常用参数1: 1. user:指定运行 Nginx 工作进程的用户和用户组,例如 user nginx nginx; 。 2. worker_processes:设置 Nginx 进程的工作进程数量,通常根据服务器的 CPU 核心数来设置,例如 worker_processes…

收藏丨世界地形图(超高清)

原文链接https://mp.weixin.qq.com/s?__bizMzUyNzczMTI4Mg&mid2247668146&idx2&snbebd2f4921994ab05ed47efdebe8e706&chksmfa770e8fcd008799bf1d1cabd62edca7f60a5c7a1ef9c0bacf3bdc102bccf0f12d54d6c07c49&token1405091246&langzh_CN&scene21#we…

盘点:20个大幅提高效率的开源网络安全工具

覆盖数字取证、加密传输、云威胁检测、渗透测试、漏洞扫描、开源代码审核、移动应用安全评估等多个领域。 开源安全项目对于推动网络安全的创新和自动化正发挥着越来越重要的作用。 以下,我们整理了近年来发布的20个能大幅提高工作效率,节省时间的优秀…

Ubuntu 22.04.4 LTS openresty(Nginx) 通过Lua+Redis 实现动态封禁IP

1 系统环境 testiZbp1g7fmjea77vsqc5hmmZ:~$ cat /etc/os-release PRETTY_NAME"Ubuntu 22.04.4 LTS" NAME"Ubuntu" VERSION_ID"22.04" VERSION"22.04.4 LTS (Jammy Jellyfish)" VERSION_CODENAMEjammy IDubuntu ID_LIKEdebian HOME…

星谷案例入选新华社国家高端智库报告,彰显国际影响力!

中关村科学城星谷(创新园)以其在商业航天领域的卓越创新能力和显著产业影响力,被新华社国家高端智库专题组认可,并入选《更好赋能中国繁荣世界——新质生产力的理论贡献和实践价值》智库报告,成为新质生产力的典型代表案例。 这是中关村科学城星谷(创新园)继登上《新闻联播》后…

卓越的 App UI 风格引领潮流

卓越的 App UI 风格引领潮流

RAG实操教程langchain+Milvus向量数据库创建你的本地知识库 二

Miluvs 向量数据库 关于 Milvui 可以参考我的前两篇文章 • 一篇文章带你学会向量数据库Milvus(一)[1]• 一篇文章带你学会向量数据库Milvus(二)[2] 下面我们安装 pymilvus 库 pip install --upgrade --quiet pymilvus如果你…

如何开启Claude 3的Artifacts功能以及如何注册Claude3

就很突然,Claude 3.5,它来了! Anthropic发布3.5系列第一个版本Claude 3.5 Sonnet。在多个关键指标中,GPT-4o几乎被吊打! 另外Claude 3.5 Sonnet是免费的,提供了跟gpt-4o一样的次数。更高的速度和次数&…

python循环写入新样本到csv文件,并解决中文乱码的问题

新样本循环写入csv中 def write_sample(self):# 创建一个包含所有字段的列表,它将作为CSV的一行fields [基地, 拉线, 正/负极车间, 罐体编号, 样本ID, 工步序号, 检测结果]row_data [self.base_id, self.line_id, self.workshop_id, self.device, self.filename[:…

使用sendBeacon进行前端数据上报

目录 前言 上报数据的时机 上报数据的方法 1. 直接发请求上报 2. 动态图片 3. sendBeacon 总结 前言 这个方法主要用于满足统计和诊断代码的需要,这些代码通常尝试在卸载(unload)文档之前向 Web 服务器发送数据。过早的发送数据可能导…

微信公众号多域名回调系统V1.5 源码

这是一款基于ThinkPHP6.0开发的微信公众号多域名回调系统。本系统有如下功能: 微信公众号多域名回调功能:微信公众号后台默认只能授权2个网页域名,用本系统突破这个限制,用同一个公众号对接无限多个网站。网站后台支持回调域名白…

王者荣耀图鉴皮肤怎么来的

王者荣耀图鉴皮肤怎么来的 最近一个王者荣耀图鉴开源很火 这个项目里面有很多的图片和音效资源,最简单的方法就是利用爬虫技术爬取这些图片资源。 第一步环境准备 Pyhton3.12macos系统 第二步查看王者荣耀官网 这些图片资源最简单的来源就是王者荣耀官网网站…

【FPGA + Nvidia/算能GPU+AI】自动驾驶多核异构实现 16路车载摄像头实时AI分析解决方案

基于 Xilinx 公司ZYNQ Ultrascale MPSoC系列 FPGA 芯片设计,应用于无人驾驶、慢速特种车及数据采集车、车载仿真测试系统等自动驾驶领域 自动驾驶:16通道车载摄像头PCIE采集卡方案。 16 通道摄像头 最多支持 16 通道 GMSL1/2 摄像头输入 8MP 摄像头 最…

MyBatisplus使用报错--Invalid bound statement

报错如下 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.lotus.mybatis.mapper.UserMapper.selectListat org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:235)at com.baomidou.mybatisplus.cor…

ModelScope联手OpenDataLab:直接调用7000+开源数据集,赋能AI模型加速研发

在人工智能的演进历程中&#xff0c;数据和模型的整合是推动技术发展的核心动力。随着AI技术的不断进步&#xff0c;整合各类关键资源&#xff0c;构建一个高效、协同的开发环境&#xff0c;已成为加速创新应用发展的关键。 基于这一理念&#xff0c;OpenDataLab浦数与ModelSc…

python基础篇(4):range语句

1 功能介绍 range语句的功能是获得一个数字序列&#xff08;可迭代类型的一种&#xff09; 2 语法 语法1&#xff1a; range(num) 获取一个从0开始&#xff0c;到num结束的数字序列&#xff08;不含num本身&#xff09; 如range(5)取得的数据是&#xff1a;[0, 1, 2, 3, 4…