一、写给Android开发者之harmony入门
一、创建新项目
![]() | ![]() |
对比 android-studio:ability类似安卓activity
ability分为两种类型(Stage模型) UIAbility和Extensionability(提供系统服务和后台任务)
启动模式
1、 singleton启动模式:单例
2、 multiton启动模式:多实例(后台多个任务卡片,类似Android的多进程的效果)
3、 specified启动模式:介于单例和多实例,可以指定实例
二、项目结构
1、多module机制:通常项目有一个或多个module组成

2、工程结构
![]() | appScope:包含应用信息 app.json5 应用配置文件 xxxlib:静态共享包模块 entry:入口模块 /src/main/ets:存放源码 /src/main/resource: 资源文件 (图片、常量等) src/main/module.json5: 模块信息配置 build-profile.json5: 构建配置文件包括 签名、模型、目标设备等 hvigorfile.ts:编译构建任务脚本(类似gradle) oh-package:依赖、版本、证书等配置 hvigor/:编译脚本配置 (类似gradle文件夹) oh-moudles:下载的依赖库列表 FeatureLogin: feature类型的登陆模块 Sharelibrary:动态共享库 |
三、打包与安装
1、打hap包:
命令行运 ./hvigorw -p module=xxx assembleHap 或者build(hap)

安装: hdc install ./entry-default-signed.hap
多hap:hdc install ./FeatureLogin-default-signed.hap ./entry-default-signed.hap ./ShareLibrary-default-signed.hsp
| 多hap快捷安装
| 多模块安装
|
2、打包app
命令行运行 ./hvigorw assembleApp或者build(apps)

除了静态共享库以源码的形式打包进依赖方,其他几个库都有相应的hap/hsp包,发布应用市场需要app的形式整体上传,而使用时hap/hsp包需要单独安装
hdc install ./FeatureLogin-default-signed.hap ./entry-default-signed.hap ./ShareLibrary-default-signed.hsp
3、运行
| entry包 | entry包
| feature包 |
- 单HAP场景:如果只包含UIAbility组件,无需使用ExtensionAbility组件,优先采用单HAP(即一个entry包)来实现应用开发。虽然一个HAP中可以包含一个或多个UIAbility组件,为了避免不必要的资源加载,推荐采用“一个UIAbility+多个页面”的方式。
- 多HAP场景:如果应用的功能比较复杂,需要使用ExtensionAbility组件,可以采用多HAP(即一个entry包+多个feature包)来实现应用开发,每个HAP中包含一个UIAbility组件或者一个ExtensionAbility组件。
4、卸载
hdc uninstall [packageName]
相关文章:
一、写给Android开发者之harmony入门
一、创建新项目 对比 android-studio:ability类似安卓activity ability分为两种类型(Stage模型) UIAbility和Extensionability(提供系统服务和后台任务) 启动模式 1、 singleton启动模式:单例 2、 multiton启动模式࿱…...
C++常用库函数——strstr、strcat
1、strstr:查找字符串子串函数,查找到的子串中第一个字符的地址,返回值是第一次出现子串字符串的位置。 例如: char a[20] "RUNOOB"; char b[10] "NOOB"; printf("%s", strstr(a, b)); 在这里…...
Kafak 消费异常:The coordinator is not available.
Kafak 消费异常:The coordinator is not available. 1. 问题描述2. 问题排查2.1 Topic 状态异常2.2 `__consumer_offsets` 简介1. 问题描述 在新环境部署 Kafak 时,发现可以正常产生消息,但是无法正常消费消息,消费消息的异常日志如下: 11:59:53.315 [main] DEBUG org.a…...
JavaScript中的对象
这里写目录标题 JavaScript中的对象属性 对象的使用属性和访问方法和调用遍历对象null 内置对象Math属性方法 JavaScript中的对象 对象(object)是JavaScript里的一种数据类型,可以理解为一种无序的数据集合(数组是有序的数据集合…...
Oracle对空值(NULL)的 聚合函数 排序
除count之外sum、avg、max、min都为null,count为0 Null 不支持加减乘除,大小比较,相等比较,否则只能为空;只能用‘is [not] null’来进行判断; Max等聚合函数会自动“过滤null” null排序默认最大…...
我独自升级崛起下载教程 我独自升级崛起一键下载
动作RPG游戏基于广大喜爱的动画和在线漫画《我独自升级崛起》在5月8日,这款新的游戏首次在全球亮相,意在给那些对游戏情有独钟的玩家带来更加丰富和多种多样的游戏体验。这个网络武侠题材的游戏设计非常具有创意,其主要故事围绕着“独孤求败”…...
RS2057XH功能和参数介绍及规格书
RS2057XH 是一款由润石科技(Runic Semiconductor)生产的模拟开关芯片,其主要功能和参数如下: 产品特点: 低电压操作:支持低至1.8V的工作电压,适用于低功耗应用。 高带宽:具有300MHz的…...
ICML 2024有何亮点?9473篇论文投稿,突破历史记录
会议之眼 快讯 2024年5月1日,第42届国际机器学习大会ICML 2024放榜啦!录用率27.5%!ICML 2024的录用结果受到了广泛的关注,本届会议的投稿量达到了9473篇,创下了历史新高,比去年的6538篇增加了近3000篇&…...
U盘提示“被写保护”无法操作处理怎么办?
今天在使用U盘复制拷贝文件时,U盘出现“U盘被写保护”提示,导致U盘明明有空闲内存却无法复制的情况。这种情况很常见,很多人在插入U盘到电脑后,会出现"U盘被写保护"的提示,导致无法进行删除、保存、复制等操…...
算法训练营第二十天 | LeetCode 110平衡二叉树、LeetCode 257 二叉树的所有路径、LeetCode 404 左叶子之和
LeetCode 110 平衡二叉树 递归写法很简单,直接自底向上每个节点判断是否为空,为空说明该层高度为0。不为空用一个int型变量l记录左子树高度(递归调用该函数自身),一个int型变量r记录右子树高度(同样递归调…...
Docker:centos7安装docker
官网:https://www.docker.com/官网 文档地址 - 确认centos7及其以上的版本 查看当前系统版本 cat /etc/redhat-release- 卸载旧版本 依照官网执行 - yum安装gcc相关 yum -y install gccyum -y install gcc-c- 安装需要的软件包 yum install -y yum-utils- 设置s…...
EasyExcel导出工具类
目录 工具类 头部实体类(要和工具类在同一个module或项目下) 日期转换器 工具类 /*** 导出Excel工具类*/ public class EasyExcelUtil<T> {/*** 单sheet(Map写入)* param response 响应对象* param headList 头部集合* p…...
【Godot4.2】EasyTreeData通用解析
概述 之前在《【Godot4.2】Tree控件自定义树形数据ETD及其解析》一文中,实现了对带缩进的层级结构文本的解析,并将其用于Tree控件的列表项构造。 不过当时并没有实现专门的类,今天花了一点时间实现了一下。现在可以更方便的构造和解析ETD数…...
力扣每日一题109:有序链表转换二叉搜索树
题目 中等 给定一个单链表的头节点 head ,其中的元素 按升序排序 ,将其转换为 平衡 二叉搜索树。 示例 1: 输入: head [-10,-3,0,5,9] 输出: [0,-3,9,-10,null,5] 解释: 一个可能的答案是[0,-3,9,-10,null,5],它…...
企业计算机服务器中了locked勒索病毒怎么处理,locked勒索病毒解密建议
随着互联网技术在企业当中的应用,越来越多的企业利用网络开展各项工作业务,网络为企业提供了极大便利,也大大加快了企业发展步伐,提高了企业生产办公效率。但网络技术的发展也为企业的数据安全带来严重威胁。近期,云天…...
开源推荐榜【MalusAdmin基于 Vue3/TypeScript/NaiveUI 和 NET7 Sqlsugar 开发的后台管理框架】
简介 Malus是海棠的意思,顾名思义,海棠后台管理系统,读音与【马卢斯】相近,也可称作为马卢斯后台管理系统。 基于NET Core | NET7/8 & Sqlsugar | Vue3 | vite4 | TypeScript | NaiveUI 开发的前后端分离式权限管理系统,采用…...
批量抓取某电影网站的下载链接
思路: 进入电影天堂首页,提取到主页面中的每一个电影的背后的那个urL地址 a. 拿到“2024必看热片”那一块的HTML代码 b. 从刚才拿到的HTML代码中提取到href的值访问子页面,提取到电影的名称以及下载地址 a. 拿到子页面的页面源代码 b. 数据提…...
2024-05-06 问AI: 介绍一下深度学习中的LSTM网络
文心一言 当谈到深度学习中的LSTM(Long Short-Term Memory)网络时,它是一种特殊的循环神经网络(RNN)架构,旨在解决传统RNN在处理长序列时遇到的梯度消失和梯度爆炸问题。LSTM网络因其能够捕捉序列数据中的…...
二、Redis五种常用数据类型-String
1、用途 简单的K-V缓存计数器分布式锁session共享分布式ID生成(自增) 2、底层实现结构 Redis底层是c语言实现的,但是并没有使用c的string来表示字符串,而是使用自己的简单动态字符串的抽象类型(simple dynamic string,SDS)。 SDS结构: st…...
echarts柱状图实现左右横向对比
实现效果如上图 其实是两组数据,其中一组数据改为负数,然后 在展示的时候,在将负数取反 第一处修改坐标轴 xAxis: [{type: value,axisLabel: {formatter: function (value) {if (value < 0) {return -value;}else{return value;}}}}], 第…...
别再纠结硬件滚动了!用Arduino+SSD1306库实现超长文本的软件滚动显示(附完整代码)
ArduinoSSD1306实现超长文本流畅滚动的终极方案 当你在创客项目中需要显示超出屏幕宽度的日志数据或长消息时,硬件滚动的局限性就会暴露无遗。我曾在一个环境监测项目中遇到这个问题——传感器数据经常超过OLED屏幕的16字符显示限制,硬件滚动方案直接截断…...
除了xfs_repair,你的CentOS7/XFS文件系统自救工具箱里还应该有什么?
构建CentOS7/XFS文件系统全栈自救工具箱:从应急修复到主动防御 当服务器突然拒绝启动,屏幕上跳出"I/O error metadata corruption detected"的红色警告时,大多数管理员的第一反应是抓起xfs_repair这根救命稻草。但真正的系统健壮性…...
SillyTavern角色卡片系统全解析:从技术原理到实战应用
SillyTavern角色卡片系统全解析:从技术原理到实战应用 【免费下载链接】SillyTavern LLM Frontend for Power Users. 项目地址: https://gitcode.com/GitHub_Trending/si/SillyTavern 技术原理:PNG元数据驱动的角色存储机制 SillyTavern角色卡片…...
CLIP-GmP-ViT-L-14多场景:新闻图解自动配文与虚假信息识别联动
CLIP-GmP-ViT-L-14多场景:新闻图解自动配文与虚假信息识别联动 你有没有想过,当你在新闻网站上看到一张图片时,旁边的文字描述是怎么来的?是编辑手动写的,还是机器自动生成的?更关键的是,你怎么…...
Python AOT编译迎来分水岭:2026年3大工业级工具实测对比(启动提速8.7×,内存降63%,兼容CPython 3.13+)
第一章:Python AOT编译的范式跃迁与工业落地元年定义长期以来,Python 以解释执行和动态特性见长,但其运行时开销、启动延迟与内存 footprint 成为云原生服务、边缘设备与实时系统规模化部署的关键瓶颈。2024 年,随着 Nuitka 14.x、…...
SenseVoice-small语音识别效果惊艳:中英混杂技术文档语音精准分段转写
SenseVoice-small语音识别效果惊艳:中英混杂技术文档语音精准分段转写 1. 引言:当技术文档遇上中英混杂的语音 想象一下这个场景:你正在参加一场技术分享会,台上的专家用流利的中文讲解,但时不时会蹦出几个英文专业术…...
Matlab APP Designer避坑指南:字符进度条不更新的解决方案
Matlab APP Designer避坑指南:字符进度条不更新的解决方案 在Matlab APP Designer开发过程中,进度条是用户交互体验的重要组成部分。许多开发者都遇到过这样的困扰:精心设计的字符进度条在运行时却"卡住"不动,直到整个计…...
NEURAL MASK 模型调试技巧:使用IDE进行Python代码跟踪与问题定位
NEURAL MASK 模型调试技巧:使用IDE进行Python代码跟踪与问题定位 调试代码,尤其是涉及复杂模型加载和推理的代码,有时候就像在黑暗的房间里找一颗掉落的螺丝钉。你大概知道它就在那儿,但就是看不见摸不着。对于NEURAL MASK这类模…...
RexUniNLU开源镜像免配置教程:自动下载权重+端口映射一步到位
RexUniNLU开源镜像免配置教程:自动下载权重端口映射一步到位 1. 这不是另一个NLP工具,而是一站式中文语义理解中枢 你有没有遇到过这样的情况:想快速验证一段中文文本里藏着多少信息——谁说了什么、发生了什么事、情绪是好是坏、背后有哪些…...
# 状态通道实战:用Solidity实现高效链下交易与链上结算 在区块链世界中,**扩展性瓶颈**一直是开发者绕
状态通道实战:用Solidity实现高效链下交易与链上结算 在区块链世界中,扩展性瓶颈一直是开发者绕不开的话题。传统智能合约每笔交互都需上链,不仅成本高昂,还导致网络拥堵。而**状态通道(State Channel)**技…...







