HarmonyOS 鸿蒙Next中如何使用本地static library中的第三方框架

HarmonyOS 鸿蒙Next中如何使用本地static library中的第三方框架 static library 使用了第三方框架

主moudle 如何使用 这个第三方框架

3 回复

【背景知识】

HAR引用三方库时,需要确保三方库被初始化。因此,首先在HAR包中封装一个初始化三方库的方法并暴露出去,其次需要宿主应用在适当的时候(如应用启动时)调用该初始化方法,并传递正确的参数。

步骤包括:

  • 在HAR包中暴露一个初始化方法,接收Context参数。
  • 宿主应用在UIAbility的onCreate方法中调用这个初始化方法。

注意事项:

  • HAR的独立性限制:HAR作为静态共享包,无法直接访问应用级上下文(如UIAbility),需通过接口暴露与主工程交互。
  • 初始化时序控制:若三方库依赖UI渲染前完成初始化,建议在EntryAbility的onWindowStageCreate()前调用。

【解决方案】

在HAR包中初始化三方库,以初始化三方库harmony-utils的AppUtil.init()方法为例,需要以下两个步骤:

步骤一:在HAR中封装并暴露初始化方法initAppUtil(),在其内部调用AppUtil.init();initAppUtil()需由主工程在UIAbility的生命周期中主动触发。

  • 通过export导出initAppUtil(),示例如下所示:
// library/src/main/ts/HarInitializer.ets
import { AppUtil } from "@pura/harmony-utils";
import { common } from "@kit.AbilityKit";
export function initAppUtil(context: common.UIAbilityContext): void {
  AppUtil.init(context); // 触发harmony-utils初始化
}
  • HAR对外暴露的接口,在Index.ets导出文件中声明如下所示:
// library/Index.ets
export { initAppUtil } from './src/main/ets/HarInitializer';

步骤二:在宿主模块的EntryAbility.ets中,通过onCreate()或onWindowStageCreate()调用HAR暴露的初始化接口。

  • ‌配置HAR包依赖‌:在宿主模块的oh-package.json5中声明对自定义HAR包的依赖,如下所示:
"dependencies": {
  "library": "file:../library"
}
  • 在UIAbility的onCreate生命周期中调用HAR包的初始化方法,传递当前上下文,如下所示:
// EntryAbility.ets(主工程)
import { AbilityConstant, common, ConfigurationConstant, UIAbility, Want } from '@kit.AbilityKit';
import { initAppUtil } from 'library';

export default class EntryAbility extends UIAbility {
  onCreate(): void {
    let context = getContext(this) as common.UIAbilityContext; 
    initAppUtil(context); // 手动初始化
  }
  // ...
}

更多关于HarmonyOS 鸿蒙Next中如何使用本地static library中的第三方框架的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next中,使用本地static library中的第三方框架需在模块的oh-package.json5中配置依赖路径。添加"dependencies": { "your-library": "file:../path/to/your-static-library" },随后通过ohpm install安装。代码中直接import库提供的接口即可调用。

在HarmonyOS Next中,如果静态库(static library)集成了第三方框架,主模块可以通过以下方式使用该框架:

  1. 确保静态库正确编译:确认静态库的依赖配置(如hvigorfile.ts)已包含第三方框架的路径或依赖声明。
  2. 主模块依赖静态库:在主模块的hvigorfile.ts中添加对静态库的依赖,例如:
    dependencies {
      implementation project(':static-library')
    }
    
  3. 导入并使用:主模块代码中直接导入静态库提供的头文件或类,通过静态库的接口间接调用第三方框架功能。
  4. 注意符号暴露:确保静态库在编译时未隐藏第三方框架的符号(如通过编译选项控制可见性)。

若静态库封装了第三方框架,主模块无需直接依赖该框架,但需遵循静态库提供的API设计。

回到顶部