鸿蒙应用程序框架基础

鸿蒙OpenHarmony【集成态HSP】 使用方-创建目录拷贝文件,在entry目录下新建libs目录,将集成态打包产物tgz包拷贝到libs目录下。 阅读详情

应用程序包基础知识

应用的多Module设计机制

  • **支持模块化开发:**一个应用通常会包含多种功能,将不同的功能特性按模块来划分和管理是一种良好的设计方式。在开发过程中,我们可以将每个功能模块作为一个独立的Module进行开发,Module中可以包含源代码、资源文件、第三方库、配置文件等,每一个Module可以独立编译,实现特定的功能。在这种模块化、松耦合的应用管理方式有助于应用的开发、维护与拓展。
  • **支持多设备适配:**一个应用往往需要适配多种设备类型,在采用多Module设计的应用中,每个Module都会标注所支持的设备类型。有些Module支持全部类型的设备,有些Module只支持一种或几种类型的设备,那么在应用市场分发应用包时,也能够根据设备类型做精准的筛选和匹配,从而将不同的包合理的组合和部署到对应的设备上。

Module类型

Module按照使用场景可以分为两种类型:

  • **Ability类型的Module:**用于实现应用的功能和特性。每一个Ability类型的Module编译后,会生成一个以.hap为后缀的文件,我们称其为HAP(Harmony Ability Package)包。HAP包可以独立安装和运行,是应用安装的基本单位,一个应用中可以包含一个或者多个HAP包,具体包含如下两种类型。
    • entry类型的Module: 应用的主模块,包含应用的入口界面、入口图标和主功能特性,编译后生成entry类型的HAP。每一个应用分发到同一类型的设备上的应用程序包,只能包含唯一一个entry类型的HAP。
    • feature类型的Module:应用的动态特性模块,编译后生成feture类型的HAP。一个应用中可以包含一个或者多个feature类型的HAP,也可以不包含。
  • **Library类型的Module:**用于实现代码和资源的共享。同一个Library类型的Module可以被其他的Module多次引用,合理的使用该类型的Module,能够降低开发和维护成本。Library类型的module分为Static和Shared两种类型,编译后会生成共享包。
    • Static Library:静态共享库。编译后会生成一个以.har为后缀的文件,即静态共享包HAR(Harmony Archive)。
    • Shared Library:动态共享库。编译后会生成一个以.hsp为后缀的文件,即动态共享包HSP(Harmony Shared Package)。实际上,Shared Library编译后除了会生成一个.hsp文件,还会生成一个.har文件。这个.har文件中包含了HSP对外导出的接口,应用中的其他模块需要通过.har文件来应用HSP的功能。为了表述方便,我们通常认为Shared Library编译后生成HSP。

HAR和HSP两种共享包的主要区别体现在:

共享包类型编译和运行方式发布和引用方式
HARHAR中的代码和资源跟随使用方编译,如果有多个使用方,他们的编译产物会存在多份相同拷贝。在编译HAR时,建议开启混淆能力,保护代码资产。HAR除了支持应用内引用,还可以独立打包发布,供其他应用引用。
HSPHSP中的代码可以独立编译,运行时在一个进程中的代码只会存在一份。HSP一般随应用打包,当前支持应用内和集成态HSP。应用内HSP只支持应用内引用,集成态HSP支持发布到ohpm私仓和跨应用引用。

HAR和HSP在APP包中的形态示意图:
在这里插入图片描述

Stage模型应用程序包结构

开发态包结构

工程结构示意图:
在这里插入图片描述
在这里插入图片描述
工程结构主要包含的文件类型及用途如下:

  • AppScope目录有DevEco Studio自动生成,不可修改。
  • Module目录名称可以由DevEco Studio自动生成(比如entry、library等),也可以自定义。
文件类型说明
配置文件包括应用级配置信息、以及Module级配置信息:
AppScope > app.json5:app.json5配置文件,用于声明应用的全局配置信息,比如应用Bundle名称、应用名称、应用图标、应用版本号等。
Module > src > main > module.json5:module.json5配置文件,用于声明Module基本信息、支持的设备类型、所含的组件信息、运行所需申请的权限等。
ArkTs源码文件Module > src > main >ets: 用于存放Module的ArkTs源码文件(.ets文件)
资源文件包括应用资源文件、以及Module级资源文件,支持图形、多媒体、字符串、布局文件等。
AppScope > resources: 用于存放应用需要用到的资源文件。
Module > src > main > resources:用于存放该Module需要用到的资源文件。
其他配置文件用于编译构建,包括构建配置文件、编译构建任务脚本、混淆规则文件、依赖的共享包信息等。
build-profile.json5:工程机或Module级的构建配置文件,包括应用签名、产品配置等。
hvigorfile.ts:应用级或Module的编译构建任务脚本,可以自定义编译构建工具版本、控制构建行为的配置参数。
obfuscation-rules.txt:混淆规则文件。混淆开启后,在使用Release模式进行编译时,会对代码进行编译、混淆及压缩处理,保护代码资产。
oh-package.json5:用于存放依赖库的信息,包括所依赖的三方库和共享包。

编译包形态

开发态与编译态试图的对照关系如下:

在这里插入图片描述

从开发态到编译态,Module中的文件会发生如下变更:

  • ets目录:ArkTs源码编译生成.abc文件
  • resources目录:AppScope目录下的资源文件会合并到Module下边的资源目录中,如果两个目录存在重名文件,编译后只会保留AppScope目录下的资源文件。
  • module配置文件:AppScope目录下的app.json5文件字段会合并到Module下面的module.json5文件中,编译后生成HAP或者HSP最终的module.json文件。在编译HAP和HSP时,会把他们所依赖的HAR直接编译到HAP和HSP中。

发布台包结构

每个应用中至少包含一个.hap文件,可能包含若干个.hsp文件,也可能不包含。一个应用中的所有.hap文件和.hsp文件合并在一起称为一个Bundle,其对应的bundleName是应用的唯一标识。

当应用发布上架到应用市场时,需要将Bundle打包为一个.app文件用于上架,这个.app文件称为App Pack(Application Package),与此同时,DevEco Studio会自动生成一个pack.info文件。pack.info文件猫叔了App Pack中每个HAP和HSP的属性,包含App中的bundleName和versionCode信息,以及Module中的name、type和abilites等信息。

注意:

  • App Pack是发布上架到应用市场的基本单元,但是不能在设备上直接运行和安装。
  • 在应用签名、云端分发、端侧安装时,都是以HAP/HSP为单元进行的。

编译发布与上架部署流程图

在这里插入图片描述

选择合适的包类型

HAP、HAR、HSP三者的功能和使用场景对比如下:

Module类型包类型说明
AbilityHAP应用功能模块,可以独立安装和运行。
必须包含一个entry类型的HAP,可选包含一个或者多个feture类型的HAP
Static LibraryHAR静态共享包,编译态复用。
- 支持应用内共享,也可以发布后供其他应用使用。
- 作为二方库,发布到OHPM私仓,供公司内部其他应用使用。
- 作为三方库,发布到OHPM中心仓,供其他应用使用。
- 多包应用相同的HAR时,会造成多包间代码和资源的重复拷贝,导致应用包体积膨胀。
- 注意:编译HAR时,建议开启混淆能力,保护代码资产。
Shared LibraryHSP动态共享包,运行时复用
- 当前仅支持应用内共享。
- 当多个包共同引用同一个共享包时,采用HSP代替HAR,可以避免HAR造成的多包件代码和资源的重复拷贝,从而减小应用包的大小。

HAP、HSP、HAR支持的规格对比如下:

规格HAPHARHSP
支持在配置文件中声明UIAbility组件与ExtensionAbility组件√××
支持在配置文件中声明pages页面√×√
支持包含资源文件与.so文件√√√
支持依赖其他HAR文件√√√
支持依赖其他HSP文件√√√
支持在设备上独立安装运行√××

说明:

  • HAR虽然不支持在配置文件中声明pages页面,但是可以包含pages页面,并通过命名路由的方式进行跳转。
  • 由于HSP只支持在应用内共享,如果HAR依赖了HSP,则该HAR文件仅支持在应用内共享,不支持发布到二方仓或者三方仓供其他应用使用,否则会导致编译失败。
  • HAR和HSP均不支持循环依赖,也不支持依赖传递。
鸿蒙NEXT开发【应用并发设计】应用架构 ArkTS是HarmonyOS APP的开发语言,它在保持TypeScript(简称TS)基本语法风格的基础上,一方面规范强化静态检查提升开发者代码的规范性;另一方面基于TypeScript增强了一些特性提升开发体验和执行效率,尤其是在并发能力上的提升。 本文档主要面向HarmonyOS APP的设计人员或开发人员,介绍应用在并行任务方案设计过程中,可能会遇到的典型场景以及对应的推荐设计方案,同时给出了方案的关键点及参考案例。 阅读详情

相关推荐

使用Taro开发鸿蒙原生应用——快速上手,鸿蒙应用开发指南

在今年的敏捷团队建设中,我通过Suite执行器实现了一键自动化单元测试。Juint除了Suite执行器还有哪些执行器呢?由此我的Runner探索之旅开始了!随着鸿蒙系统的不断完善,许多应用厂商都希望将自己的应用移植到鸿蒙平台上。最近,Taro 发布了 v4.0.0-beta.x 版本,支持使用 Taro 快速开发鸿蒙原生应用,也可将现有的小程序转换为鸿蒙原生应用。本文将正式为开发者提供一份完整的鸿蒙应用开发指南,帮助大家使用 Taro 开发自己的第一个鸿蒙应用。

2401_83047642的博客 1734

鸿蒙APP架构及开发入门

鸿蒙介绍与开发指南

三翼鸟数字化平台的技术实践分享 3551

英飞凌 AURIX Development Studio工程移植到Hightec的方法

1. 软件简介 AURIX™ Development Studio是英飞凌针对AURIX TC2XX/TC3XX系列单片机推出了一款免费的软件,集成了iLLD库,内置Tasking compiler和Tasking Debugger,但这两个模块只能用于非商业用途,可供学习和试用。iLLD库是英飞凌为TC2XX和TC3XX Tricore系列单片机提供的底层驱动库,有完善的使用手册,和较好的移植性。 Hightec是一款可以用来开发Aurix系列单片机的编译器,有免费版,可商用,集成GCC编译器,可用UDE

weixin_42967006的博客 7134

鸿蒙系统学习 框架概述(一)

。鸿蒙的LiteOS才是用来对标Linux的,值得注意的是LiteOS和Linux是一样的,都是宏内核而不是之前宣传的微内核,鸿蒙的微内核可能要到过段时间才会发布。那么鸿蒙对标的产品是什么呢?是安卓和Windows。这也让安卓特别的难受,因为与它正在开发的Funchsia系统在地位上有较大的吻合,都是面向IOT设备的操作系统。我们可以看看这张图,在鸿蒙的整个框架中内核只是占比较小的一部分,而内核这部分里还分了两个内核子系统:Linux和LiteOS。所以内核位于鸿蒙就像心脏位于人体,非常重要但占比很小。如果

求变,从思想开始 1万+

lattice 黑盒子的生成和使用(Creating Your Own Black Box Modules)

很多客户,特别是外包项目,需要做黑盒子,防止他人看到源码,那么这就需要对相关的源码打包加封了。diamond help 说的也是模糊模糊的,这次给出实际验证过的流程。 1.先将要加封的模块间一个工程,建好工程,写好代码之后,模块名字叫做crosslink(这个使用黑盒子的时候要用),代码如下: module crosslink( output wire[3:0] led, input wire clk, input wire reset ); reg [29:0] cnt; reg [3:0] led1;

qq_39633876的博客 1481

别再手动调参数了!用3ds Max的tyDiffusion插件,5分钟搞定AI动态纹理生成

本文介绍了3ds Max的tyDiffusion插件如何通过AI技术快速生成动态纹理,大幅提升3D美术师的工作效率。从火焰、水流到布料飘动,tyDiffusion能在5分钟内完成传统手工需要数小时的任务,且效果更自然。文章详细解析了插件的核心功能、实战配置及进阶应用,帮助用户轻松实现AI动态纹理生成。

weixin_30919429的博客 667

鸿蒙开发学习——应用程序框架

* 大概知道了,四个状态,两个窗口管理器。

Blackoutdragon的博客 2066

华为私有云HCS 8.1.1实战:从镜像制作到云主机发放全流程指南

本文详细解析了华为私有云HCS 8.1.1从镜像制作到云主机发放的全流程实战指南。内容涵盖制作标准化QCOW2镜像、配置云主机规格与主机组、规划外部网络,以及在运营面为租户初始化资源、配置审批流与产品目录。最后,通过用户视角演示了从创建VPC网络到申请、审批并最终绑定EIP访问云主机的完整操作步骤,为运维人员和架构师提供了一套清晰、可落地的HCS部署与管理实践方案。

weixin_29305313的博客 1124

鸿蒙应用开发:应用程序框架基础知识

摘要:HarmonyOS Stage模型是面向复杂应用设计的框架,具有四大核心优势:1)共享ArkTS引擎实例,降低内存占用并提升开发效率;2)支持组件级跨端迁移与多端协同,实现数据和状态共享;3)适配多设备多窗口形态,提供统一生命周期管理;4)强化系统管控能力,规范后台应用行为。该模型采用工程化目录结构,通过UI与UIAbility分离设计,结合RPC通信机制,为开发者提供高效、可扩展的应用开发方案。

weixin_54129994的博客 357

【FPGA教程案例89】编译码2——使用vivado核实现RS信道编译码

RS编码,又称里所码,即Reed-solomon codes,是一种前向纠错的信道编码,对由校正过采样数据所产生的多项式有效。当接收器正确的收到足够的点后,它就可以恢复原来的多项式,即使接收到的多项式上有很多点被噪声干扰失真。

FPGA/MATLAB学习教程/源码/项目合作开发 3540

Laser-Marking 激光振镜打标机的开源代码 - 下载 - 搜珍网

为了方便开发者的使用和定制化需求,我们在这里提供激光振镜打标机的开源代码,并附带详细的描述。首先,让我们来了解一下激光振镜打标机的基本原理。振镜系统由两个可移动的反射镜组成,可以控制激光束在水平和垂直方向上的偏转角度,从而实现对工件的精确控制。通过这段开源代码,开发者可以根据自己的需求对激光振镜打标机进行二次开发和定制化。你可以修改振镜角度、打标速度等参数,也可以添加其他功能,例如自动识别和追踪等。首先,我们创建了一个串口对象,用于与激光振镜打标机进行通信。函数实现了对用户输入文本的打标操作。

TechProX的博客 1278

鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操

本文系统介绍了鸿蒙应用开发的核心架构与Stage模型。主要内容包括:鸿蒙系统的四层架构(应用层、框架层、系统服务层、内核层),重点聚焦应用层开发;Ability Kit的核心能力与特征,包括生命周期管理、组件交互等;详细对比FA模型与Stage模型的差异,突出Stage模型在资源利用、跨端适配等方面的优势;解析Stage模型的核心架构与组成单元(AbilityStage、UIAbility等),阐明"模块-组件-页面"的层级关系。通过建立完整的"宏观-微观"认知体系,

weixin_35045177的博客 1374

手把手教你完成YOLOv9 PyQt5目标检测界面搭建,实现图片检测、视频检测、摄像头检测,可用于大论文凑工作量或毕设必备,全网最详细教程

目标检测是计算机视觉中的重要任务,广泛应用于安防监控、自动驾驶、智能家居等领域。YOLO系列模型由于其高效的检测速度和较高的准确率,成为目标检测任务的首选算法之一。本项目结合 YOLOv9与 PyQt5,构建了一个图形化界面,便于用户进行目标检测的操作和展示,实现对图片、视频和摄像头的实时目标检测,不仅可以用于大论文的工作量展示,还可以作为毕业设计。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 2657

鸿蒙应用开发快速学习指南(初级篇-4 应用程序框架基础)

但是一个应用中只能包含的应该是Application之类的东西,与Alibility不沾边,选择错误,拿下!

weixin_52490101的博客 1174

python全栈入门到实战【基础篇 01】Python初识:定位、优势与发展历程

本文介绍了热门编程语言Python。它是解释型高级语言,具通用、入门友好、胶水型特点,以简洁易读为设计哲学。优势包括语法简洁高效、生态庞大、跨平台、社区活跃、应用广泛、门槛低。发展历经诞生(1989-1994,吉多创建,1994年1.0发布)、成长(版本迭代,3.0发布)、崛起(Web与大数据推动)、爆发(AI浪潮助推)及持续迭代阶段。

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

鸿蒙应用开发快速学习指南(中级篇-1 应用程序框架进阶)

在官方的介绍中:AbilityStage是一个。

weixin_52490101的博客 2951

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

跟着寒假训练营打造一款用于学习跨平台框架Flutter开发鸿蒙应用案例集的应用程序

摘要 本文记录了基于Flutter框架开发鸿蒙应用程序的全过程。作者通过参与AtomGit&HCDE广州站活动获得启发,制定了开发跨平台鸿蒙应用的目标。文章详细介绍了开发环境搭建(包括VSCode、DevEco Studio等工具配置)、工程创建与签名流程,以及如何使用animated_bottom_navigation_bar实现底部导航栏。重点分享了Flutter与鸿蒙生态的适配经验,包括页面组件创建、依赖管理等内容。该项目采用数字未来主义设计风格,旨在为开发者提供跨平台鸿蒙开发的实践参考,最终

mark_ningning的博客 1014

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

鸿蒙NEXT开发浅进阶到精通02:鸿蒙ASCF框架适配

如果你有uniapp开发或者小程序开发经验,则可以很快上手ASCF框架,快速适配UniAPP项目到鸿蒙

m0_72778152的博客 1153

鸿蒙应用开发、生态项目实战学习资料

鸿蒙应用开发、生态项目实战学习资料

qq_44827634的博客 403

Pura X Max 鸿蒙应用适配攻略合集

本合集精选十篇鸿蒙应用折叠屏适配优化的实战文章,涵盖从Top3可用性场景优化指引,Top4 体验优化场景升级方案,API 23版本最新特性悬浮页签与沉浸光感适配指南,以及鸿蒙版微信小程序快速修复指南。

【HarmonyOS开发者社区】官方小助手 3628

鸿蒙生态 ——鸿蒙智能设备创新(鸿蒙应用服务创新) 3-25

基于鸿蒙操作系统的应用服务无须安装、卸载,自动更新,构成鸿蒙操作系统应用的主要部分是元程序、元服务。时代的各种应用软件的表现形式、功能特征、具体服务方式与内。网时代操作系统的简单继承、复制与剪裁,所以,基于鸿蒙操作。览器、客户端及计算机、手机本地进入的模式,鸿蒙操作系统应。用服务包括桌面唤起、碰一碰、扫一扫、场景智能化推荐等,全。复杂的功能、各种强制的应用操作流程、各种因素造成的等待时。种家用电器、车、智能手表及户外的各种公共设备中,获得由元。具体体现在产品上,包括智能家居、车机、智慧屏、手机、计算。

qq_35797634的博客 865

HarmonyOS 应用框架

一个应用程序的模型,一种抽象描述。目前主要是从FA模型向,Stage模型进行演化

MuZiChunChun的博客 421

史上最硬核全套Java视频教程(学习路线+视频+配套资料)_千锋javaweb视频资料

其实,使用Javaweb进行企业级开发是完全可以的,但是开发效率比较低,所以对常用的逻辑操作进行封装就形成了框架,因此框架是企业开发的入门技能。这里还要学习下数据库知识,数据库不仅仅是Java开发工程师的必学课程,也是其他语言都需要掌握的技能。用于对交互过程中客户的数据进行存储。学习成就:前端掌握Java核心技术,掌握面向对象设计思想、掌握数据结构知识、掌握设计模式使用,掌握网络基本知识以及掌握企业开发工具。学习成就:掌握前端技术,掌握服务器开发技术、掌握B/S架构设计、掌握项目开发流程及技巧等。

2401_83974087的博客 358

Web前端一套全部清晰 ① day1 学习路线

JavaScript全套(js基础+Web APIs+js进阶) ——> 《框架前置课》AJAX-Node.js-Webpack-Git。框架前置课Node.js&es6 ——> Vue2+Vue3全套 ——> iHRM人力资源后台管理项。自 ——> Vue3小免鲜企业级电商实战项目。uni-app小兔鲜小程序实战 →微信小程序。React18入门到实战 ——> JS面试。HTML5+CSS3+移动web。

m0_73983707的博客 297
上一篇: ArkTs基础语法-声明式UI-条件渲染/循环渲染
下一篇: 鸿蒙UIAbility组件概述(一)
gitzzp
博客等级 码龄11年 307粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值