求助大佬,我有两个module, B module 包含native,编译会产出so,怎么在A模块的HarmonyOS鸿蒙Next arkTs侧直接导入这个so?

求助大佬,我有两个module, B module 包含native,编译会产出so,怎么在A模块的HarmonyOS鸿蒙Next arkTs侧直接导入这个so? cke_215.png

如图,这是在B module 内的page使用native 函数,我怎么在 entry module 的page引入这个so呢?


更多关于求助大佬,我有两个module, B module 包含native,编译会产出so,怎么在A模块的HarmonyOS鸿蒙Next arkTs侧直接导入这个so?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

通过 ​HAR/HSP 包实现共享可以吗?

更多关于求助大佬,我有两个module, B module 包含native,编译会产出so,怎么在A模块的HarmonyOS鸿蒙Next arkTs侧直接导入这个so?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,如果你需要在A模块的arkTs侧直接导入B模块编译产出的.so文件,可以通过以下步骤实现:

  1. 确保B模块正确编译生成.so文件:B模块包含native代码,编译后会在/libs/目录下生成对应的.so文件。

  2. 在A模块的entry目录下的build-profile.json5中配置依赖:在A模块的build-profile.json5文件中,添加对B模块的依赖。例如:

    {
      "dependencies": {
        "B": "file:../B"
      }
    }
    
  3. 在A模块的entry目录下的oh-package.json5中配置native依赖:在oh-package.json5文件中,添加对B模块的native依赖。例如:

    {
      "dependencies": {
        "B": "file:../B"
      },
      "nativeDependencies": {
        "B": "file:../B/libs"
      }
    }
    
  4. 在A模块的arkTs代码中导入并使用.so文件:在A模块的arkTs代码中,通过loadLibrary方法加载B模块的.so文件。例如:

    import { loadLibrary } from '@ohos/napi';
    
    loadLibrary('libB.so').then(() => {
      // 调用native方法
    });
    

通过以上步骤,你可以在A模块的arkTs侧直接导入并使用B模块编译生成的.so文件。

在HarmonyOS鸿蒙Next的ArkTS中,如果你需要在A模块中直接导入B模块编译产出的so库,可以按照以下步骤操作:

  1. 放置SO文件:将B模块编译生成的so文件放置在A模块的src/main/resources/rawfile目录下。

  2. 加载SO库:在A模块的ArkTS代码中,使用Native API加载so库。例如:

    import native from '[@ohos](/user/ohos).native';
    native.loadLibrary('libBModule.so');
    
  3. 调用Native方法:确保B模块的Native方法在A模块中正确声明,并调用这些方法。

这样,A模块就可以成功加载并调用B模块的so库了。

回到顶部