美文网首页鸿蒙(HarmonyOS)开发知识@IT·互联网
OpenHarmony应用开发引入开源C/C++库---之Har

OpenHarmony应用开发引入开源C/C++库---之Har

作者: 迪士尼在逃程序员 | 来源:发表于2024-09-21 19:58 被阅读0次

    Har 包

    HAR(Harmony Archive)是静态共享包,可以包含代码、C++ 库、资源和配置文件。通过 HAR 可以实现多个模块或多个工程共享 ArkUI 组件、资源等相关代码。HAR 不同于 HAP,不能独立安装运行在设备上,只能作为应用模块的依赖项被引用。

    • HAR 开发约束限制
      • HAR 不支持 UIAbility、ExtensionAbility 组件和 pages 页面。
      • HAR 不支持在 build-profile.json5 文件的 buildOption 中配置 worker。
      • FA 模型与 Stage 模型的 HAR 不支持相互引用。
      • Stage 模型的 HAR,不能引用 AppScope 内的内容。在编译构建时 AppScope 中的内容不会打包到 HAR 中,因此会导致 HAR 资源引用失败。

    开发介绍

    1. 创建一个工程
    1. 工程里加模块
    1. 选择 staticlibrary,就是静态库
    1. 打开 native 的开关就是支持 nativec++,也就支持 ndk
    1. 在主工程里导入 library 工程
    1. 修改代码导出控件,方法
        // library 工程里修改 ------------------------------------------
        // src/main/ets/components/mainpage/MainPage.ets
        export struct AddCom {
        ......
                Text(this.message)
                  .fontSize(50)
                  .fontWeight(FontWeight.Bold)
                  .onClick(() => {
                    hilog.info(0x0000, 'testTag', 'Test NAPI 2 + 3 = %{public}d', testNapi.add(this.na, this.nb));
                    this.na += 1;
                    this.nb += 2;
                    this.message = "AddCom = " + testNapi.add(this.na, this.nb);
                  })
    
        // src/main/ets/components/mainpage/Caculate.ets
        import hilog from '@ohos.hilog';
        import testNapi from 'liblibrary.so';
    
        export namespace  Caculator {
          export function add(a: number, b: number) {
            hilog.info(0x0000, 'testTag', 'Test NAPI 2 + 3 = %{public}d', testNapi.add(a, b));
            return testNapi.add(a, b);
          }
        }
    
        // Index.ets
        export { AddCom } from './src/main/ets/components/mainpage/MainPage'
        export { Caculator } from './src/main/ets/components/mainpage/Caculate'
    
        // library 工程里修改 ------------------------------------------
    
        // 主项目里导入
        import { AddCom, Caculator } from 'library'
        .....
                Text(this.message)
                  .fontSize(50)
                  .fontWeight(FontWeight.Bold)
                  .onClick(() => {
                    hilog.info(0x0000, 'testTag', 'Test Har 2 + 3 = %{public}d', Caculator.add(this.na, this.nb));
                    this.na += 10
                    this.nb += 10
                    this.message = "2+3=" + Caculator.add(this.na, this.nb)
                  })
    
    1. 结果

    总结

    可以利用 OpenHarmony 的 hsp 和 har,包装组件和对应的 NDK 工程,提供给其他应用进行开发和应用。

    写在最后

    如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙

    • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
    • 关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。
    • 想要获取更多完整鸿蒙最新学习知识点,请移步前往小编:https://gitee.com/MNxiaona/733GH/blob/master/jianshu

    相关文章

      网友评论

        本文标题:OpenHarmony应用开发引入开源C/C++库---之Har

        本文链接:https://www.haomeiwen.com/subject/ggfcxjtx.html