HarmonyOS开发实战:DevEco开发工程介绍

1. 鸿蒙App包结构

1.1 应用/服务的发布形态

先看下华为开发文档中的介绍:

应用/服务的发布形态为APP Pack(Application Package,简称App),它是由一个或多个HAP(Harmony Ablity Package)包以及描述App Pack属性的pack.info文件组成。

在iOS系统可以理解为.ipa文件,在Android系统可以理解为.apk文件,但是上面又提到了HAP,这一点和iOS、Android又有什么不同呢?

1.2 HAP(Harmony Ablity Package)

一个HAP在工程目录中对应一个Module,其中包含代码、资源、第三方库及应用/服务配置文件组成。分为Entry和Feature两种类型:

  • Entry:应用/服务的主模块,作为应用的入口,提供了应用的基础的功能;
  • Feature:应用/服务的动态特性模块,作为应用能力的扩展,可以根据用户的需求和设备类型进行选择性安装;

从上面对于HAP的描述来看,HAP可以理解为在鸿蒙官方提供的一种组件化方案,每一个应用/服务都必须有一个Entry类型的HAP,作为应用入口。另外,对于大型的应用/服务可以根据业务建立不同的Feature类型的HAP,选择性安装。

简单来说就是,简单的应用有一个Entry类型的HAP足以,复杂的应用可以考虑将业务拆成不同的Feature类型的HAP。

1.3 应用开发模型

不同的应用模型对应的工程目录会有所区别,这里先来了解下鸿蒙系统提供的应用模型。

应用模型是HarmonyOS为开发者提供的应用程序所需能力的抽象,它提供了应用程序必备的组件和运行机制。开发者可以基于一套统一的模型进行应用开发,使应用开发更简单、高效。

HarmonyOS应用模型的构成要素包括:

  • 应用组件
    • 是应用的基本组成单位,是应用的运行入口。可以理解为上面介绍的HAP;
  • 应用进程模型
    • 定义应用进程的创建和销毁方式,以及进程间的通信方式;
  • 应用线程模型
    • 定义应用进程内线程的创建和销毁方式、主线程和UI线程的创建方式、线程间的通信方式;
  • 应用任务管理模型
    • 负责管理模型定义任务(Mission)的创建和销毁方式,以及任务与组件间的关系;
  • 应用配置文件
    • 包含应用配置信息、应用组件信息、权限信息、开发者自定义信息等,用于提供给编译工具、应用市场和OS使用;

鸿蒙系统先后提供了两种应用模型:

  • FA(Feature Ablity)模型:Harmony OS早期版本开始支持的模型,目前不再主推;
  • Stage模型:HarmonyOS 3.1 Developer Preview版本新增的模型,目前主推。由于该模型中提供了AblityStage、WindowStage等类作为应用组件和Window窗口的舞台,所以称这种应用模型为Stage模型。

可能在某个时间点鸿蒙系统的设计大佬们发现当前的开发架构不足以支持复杂应用的开发,所以结合当时的设计架构提出了FA模型,然后又基于FA模型进行改进,形成了Stage模型。那之前的FA模型也不能丢呀,写在官方文档中既展示了鸿蒙系统的复杂性,又方便开发者们将两种应用模型进行对比,方便理解,哈哈😄

这里对于FA模型和Stage模型就不进入深入研究了,先有个大概理解即可,这篇文章的目的是介绍开发工程,之后再另起一篇文章学习下鸿蒙系统的两种应用开发模型。

1.4 Stage模型应用程序包结构

现在Stage应用模型是之后主推的,所以我们前期可以专注于这一种模型即可,包结构如下图所示:

image.png

从上面这个图中可以很清晰的理解前面对App Pack的介绍:

  • 应用的发布形态是 xxx.app
  • 一个app下可以有多个.hap:只能有一个Entry.hap,Feature类型的HAP可以有多个
  • 应用有一个对应的pack.info文件
  • 一个Module(.hap)都有自己的module.json文件,包含了Module的基本配置信息、应用组件信息和权限信息等等;

2.ArkTS工程目录结构(Stage模型)

2.1 工程目录介绍

ArkTS Stage模型支持API Version 9,以之前创建的hello world工程为例,其工程目录结构如下图所示:

截屏2024-03-17 15.17.32.png

  • AppScope
    • app.json5:存放应用的全局配置信息
  • entry:应用/服务的入口模块,编译构建后会生成.hap
    • src/main/ets:用于存放ArkTS源码
    • src/main/ets/entryablity:应用/服务的入口
    • src/main/ets/pages:应用/服务包含的页面
    • src/main/resources:用于存放图片、媒体、字符串、布局文件等资源文件
      • base/element:字符串、整型数、颜色、样式等json文件
      • base/media:多媒体文件,图片、音视频等
      • rawfile:用于存储任意格式的原始资源文件,需要指定文件路径和文件名进行引用
    • scr/main/module.json5:模块对应的配置文件,包括HAP的配置信息、应用在设备上的配置信息以及应用的全局配置信息等;
    • oh—modules:用于存放三方库依赖关系;
    • build-profile.json5:当前模块的信息、编译信息配置项,包括buildOption、targets配置等
    • hvigorfile.ts:模块级编译构建任务脚本
    • oh-package.json5:配置三方包声明文件的入口及包名
  • build-profile.json5:应用级配置信息,包括签名、产品配置等
  • hvigorfile.ts:应用级编译构建任务脚本

2.2 切换工程视图

上面是我们创建鸿蒙应用默认的工程视图,其实DevEco也另外提供了Ohos(OpenHarmony Operating System)视图:

  • 默认的工程视图:展示工程中实际的文件结构;
  • Ohos视图:隐藏不常用的文件,将常用的文件进行重组展示,更简洁;

当工程创建或者打开之后,如果想从工程视图切换到Ohos视图,左上角 Project -> Ohos进行切换:

image.png

3. 新工程配置项

在了解完工程目录结构之后,我们再回过头来看下创建Hello world工程时需要填的一些配置项,上次我们都是默认的,这次来了解一下。

当我们选择创建工程并选取了Empty Ablity模板之后,会让我们配置工程的基本信息:

截屏2024-03-17 15.37.36.png

  • Project Name:工程的名字
  • Bundle name:应用的包名,用于标识应用的唯一性
  • Save location:工程文件本地存储路径
  • Compile SDK:应用/服务的目标API Version,DevEco Studio会根据指定的版本编译打包
  • Model:应用开发模型,Stage or FA(API Version 4-8只支持FA)
  • Enable Super Visual:支持低代码开发模式,部分模板支持低代码开发
  • Language:开发语言
  • Compatible SDK:兼容的最低API Version
  • Device type:支持的设备类型

从这个配置项来说,和iOS、Android大同小异。

4. 添加/删除Module

上面提到一个应用中可以有一个或多个Module,并且每个Module都可以独立编译和运行,所以我们可以在工程中创建新的Module,Module又分为Ablity和Library两种类型。

  • Ablity:构建应用的基本组件,负责实现应用的具体功能也业务逻辑;
  • Library:是代码的集合,用于提供可复用的功能和资源,比如第三方库是以Library的形式提供的;

之前我们创建的Hello world工程只包括一个

4.1 在工程中添加Module

4.1.1 创建新的Module

两种方法:

  • 在工程目录顶部,右键,选择New -> Module
  • 选中工程目录中任意文件,然后菜单栏中选择File -> New -> Module

在弹出页面中,选择需要创建的模板:

截屏2024-03-17 15.54.41.png

配置Module的基本信息:

截屏2024-03-17 15.55.50.png

  • Module name:模块名称
  • Module type:因为当前已经有了Entry类型,所以只能是Feature类型
  • Enable Super Visual:是否使用低代码开发方式
  • Language:开发语言
  • Device type:设备类型

配置Ablity信息:

截屏2024-03-17 15.55.55.png

  • Ablity name:名称
  • Exported:标识该Ablity是否可以被其它应用/服务调用

完成之后就可以在工程中看到该Module了,这里我创建的Module name为application:

截屏2024-03-17 15.59.31.png

删除的话就很简单了,直接在工程目录中选中该模块,右键删除即可。

最后

有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)资料用来跟着学习是非常有必要的。 

这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,

内容包含了:ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)技术知识点。

希望这一份鸿蒙学习资料能够给大家带来帮助,有需要的小伙伴自行领取,限时开源,先到先得~无套路领取!!

如果你是一名有经验的资深Android移动开发、Java开发、前端开发、对鸿蒙感兴趣以及转行人员,可以直接领取这份资料

 获取这份完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

鸿蒙(HarmonyOS NEXT)最新学习路线

  •  HarmonOS基础技能

  • HarmonOS就业必备技能 
  •  HarmonOS多媒体技术

  • 鸿蒙NaPi组件进阶

  • HarmonOS高级技能

  • 初识HarmonOS内核 
  • 实战就业级设备开发

 有了路线图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)鸿蒙(OpenHarmony )开发入门教学视频,内容包含:ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。

获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

《鸿蒙 (OpenHarmony)开发入门教学视频》

《鸿蒙生态应用开发V2.0白皮书》

图片

《鸿蒙 (OpenHarmony)开发基础到实战手册》

OpenHarmony北向、南向开发环境搭建

图片

 《鸿蒙开发基础》

  • ArkTS语言
  • 安装DevEco Studio
  • 运用你的第一个ArkTS应用
  • ArkUI声明式UI开发
  • .……

图片

 《鸿蒙开发进阶》

  • Stage模型入门
  • 网络管理
  • 数据管理
  • 电话服务
  • 分布式应用开发
  • 通知与窗口管理
  • 多媒体技术
  • 安全技能
  • 任务管理
  • WebGL
  • 国际化开发
  • 应用测试
  • DFX面向未来设计
  • 鸿蒙系统移植和裁剪定制
  • ……

图片

《鸿蒙进阶实战》

  • ArkTS实践
  • UIAbility应用
  • 网络案例
  • ……

图片

 获取以上完整鸿蒙HarmonyOS学习资料,请点击→纯血版全套鸿蒙HarmonyOS学习资料

总结

总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,他们才能在这个变革的时代中立于不败之地。 

  • 29
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值