【NAPI】鸿蒙调用三方SO里的方法

959 阅读1分钟

在鸿蒙中,我们存在一个三方SO,我们想要使用其里边的方法,具体该怎么操作呢?

在鸿蒙中,衔接ETS代码和C代码之间的这一层转换叫做NAPI,对应于Android中的JNI。

调用SO里的方法

首先我们拿到SO,放到项目对应的lib目录下,以libentry为例,如图:

image (1).png

接着呢,需要定义.d.ts文件来声明SO中的方法,以便在ETS中使用。

我们在src目录下对应位置建立.d.ts文件和oh-package.json5文件,路径如图。注意路径必须在cpp/types下,types 下的文件夹名字随意命名。

image (2).png

其中index.d.ts中内容如下:

export const add: (a: number, b: number) => number;

这里定义了SO中对外暴露的API接口。我们把所有需要用到的SO接口都在这里进行声明定义。

然后在oh-package.json5中将index.d.ts文件和SO关联起来,以便ETS知道去哪里找这些声明的SO方法。

oh-package.json5中内容如下,注意name后要写上so的名字。

{
  "name": "libentry.so",
  "types": "./index.d.ts",
  "version": "",
  "description": "Please describe the basic information."
}

这样下来我们将SO方法暴露出来给ETS用,接下来还需要引入一下SO,以便可以加载SO,具体路径在当前module下的oh-package.json5里进行配置,如图红框所示。

image (3).png

注意配置完了后,运行一下将SO加载到项目中。

image (4).png

然后我们在项目中就可以使用方法了。

代码文件中import的文件是我们在oh-package.json5中定义的这个别名,如下图红框。

image (5).png

代码中使用:

image (6).png