HarmonyOS 鸿蒙Next 普通项目如何集成.so文件

发布于 1周前 作者 nodeper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 普通项目如何集成.so文件

普通项目没有直接创建C++项目自动生成的文件,我新建了一个项目 把自动生成cpp文件夹下的文件全拷到我的老项目中,却无法成功调用C++项目默认的方法 testNapi.add(2+3)

2 回复
  

cpp文件夹复制在/src/main下 检查下oh-package.json5中dependencies参考:

  "dependencies": {
    "liblibrary_ndk.so": "file:./src/main/cpp/types/liblibrary_ndk",
  }

复制

build-profile.json5中buildOption参考

  "buildOption": {
    "externalNativeOptions": {
      "path": "./src/main/cpp/CMakeLists.txt",
      "arguments": "",
      "cppFlags": "",
    }
  }

复制

使用参考:

import liblibrary_ndk from 'liblibrary_ndk.so'
hilog.info(0x0000, 'testTag', 'Test NAPI 9 + 3  = %{public}d', liblibrary_ndk.add(9, 3));

HarmonyOS鸿蒙Next普通项目集成.so文件,可以按照以下步骤进行:

  1. 准备.so文件:确保已生成的.so文件与项目兼容,并针对不同系统架构(如arm64-v8a、x86_64)提供必要的版本。

  2. 拷贝.so文件:将.so文件拷贝到项目的libs目录下。如果没有该目录,可以在项目的适当位置手动创建。

  3. 配置build.gradle:在项目的build.gradle文件中,添加依赖项以指定.so文件的路径。例如,可以使用implementation fileTree(dir: 'libs', include: ['*.so'])

  4. 加载.so文件

    • ArkTS:使用动态import语句加载.so文件。例如,let module = await import("libentry.so");
    • Native层:使用dlopen等标准库函数加载.so文件,并通过dlsym获取函数指针。
  5. 调用.so文件中的函数:加载成功后,即可在代码中调用.so文件中导出的函数。

请确保.so文件的名称与代码中加载的名称一致,以避免加载失败。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部