鸿蒙应用程序包与ArkUI

在基于 Stage 模型开发应用之前，开发者需要了解应用的设计机制、应用程序包结构等基础知识。

应用与应用程序包

用户应用程序泛指运行在设备的操作系统之上，为用户提供特定服务的程序，简称 “应用”。一个应用所对应的软件包文件，称为 “应用程序包”。

当前系统提供了应用程序包开发、安装、查询、更新、卸载的管理机制，便于开发者开发和管理应用。同时，系统还屏蔽了不同的芯片平台的差异（包括 x86/ARM，32 位 / 64 位等），应用程序包在不同的芯片平台都能够安装运行，这使得开发者可以聚焦于应用的功能实现。

应用的多 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：应用的动态特性模块，编译后生成 feature 类型的 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）。

ArkUI 方舟 ui

ArkUI（方舟 UI 框架）为应用的 UI 开发提供了完整的基础设施，包括简洁的 UI 语法、丰富的 UI 功能（组件、布局、动画以及交互事件），以及实时界面预览工具等，可以支持开发者进行可视化界面开发。

基本概念

UI： 即用户界面。开发者可以将应用的用户界面设计为多个功能页面，每个页面进行单独的文件管理，并通过页面路由 API 完成页面间的调度管理如跳转、回退等操作，以实现应用内的功能解耦。

组件： UI 构建与显示的最小单位，如列表、网格、按钮、单选框、进度条、文本等。开发者通过多种组件的组合，构建出满足自身应用诉求的完整界面。

两种开发范式

声明式开发范式：采用基于 TypeScript 声明式 UI 语法扩展而来的 ArkTS 语言，从组件、动画和状态管理三个维度提供 UI 绘制能力。

类 Web 开发范式：采用经典的 HML、CSS、JavaScript 三段式开发方式，即使用 HML 标签文件搭建布局、使用 CSS 文件描述样式、使用 JavaScript 文件处理逻辑。该范式更符合于 Web 前端开发者的使用习惯，便于快速将已有的 Web 应用改造成方舟 UI 框架应用。

基于 ArkTS 的声明式开发范式的方舟开发框架是一套开发极简、高性能、支持跨设备的 UI 开发框架，提供了构建应用 UI 所必需的能力，主要包括：

ArkUI 开发框架

此文由 Mix Space 同步更新至 xLog
原始链接为 http://www.sroxck.top/posts/harmony/arkui