HarmonyOS Next 5.0 模块entry、feature、har区别

439 阅读2分钟

在鸿蒙 Next 开发中,module 类型的 modulehar 有明显的区别,主要体现在它们的用途、功能和使用场景上。以下是详细的对比和解释:

1. 模块类型 module

在鸿蒙 Next 中,module 是一个通用的模块类型,可以用于多种用途。根据 module.json5 文件中的 type 属性,模块可以分为以下几种类型:

  • entry:应用的主模块,作为应用的入口,提供了应用的基础功能。一个应用只能有一个 entry 类型的模块。
  • feature:应用的动态特性模块,用于扩展应用的功能。一个应用可以包含多个 feature 类型的模块。
  • har:静态共享包,用于共享代码、资源等。
  • shared:动态共享包,用于在多个模块之间共享代码和资源。

2. har(Harmony Archive)

har 是一种静态共享包,主要用于共享代码、资源等。以下是 har 的特点:

  • 用途har 通常用于封装共享的代码和资源,可以被多个模块或多个工程共享。
  • 发布har 可以发布到 OHPM(OpenHarmony Package Manager)中心仓或私仓,供其他应用使用。
  • 依赖har 可以依赖其他 har 文件,但不支持循环依赖,也不支持依赖传递。
  • 编译:编译后,har 会被拆分到使用的位置,通常不带有 UIAbility

3. 区别

以下是 modulehar 的主要区别:

特性modulehar
用途应用的主模块或动态特性模块共享代码和资源的静态共享包
独立运行可以独立安装和运行(entry 类型)不能独立运行,只能作为依赖项被引用
包含内容代码、资源、第三方库、配置文件等代码、资源、C++ 库、配置文件等
依赖传递支持不支持
发布作为应用的一部分发布可以发布到 OHPM 中心仓或私仓
编译编译为 HAP 文件编译后被拆分到使用的位置

4. 使用场景

  • module

    • entry:作为应用的主入口,提供核心功能。
    • feature:扩展应用的功能,可以根据需要动态加载。
  • har

    • 作为共享库,提供跨模块或跨工程的代码和资源共享。
    • 适用于二方库或三方库的封装。

通过合理使用 modulehar,可以实现代码和资源的共享,同时保持应用的模块化和可维护性。