在鸿蒙中,我们存在一个三方SO,我们想要使用其里边的方法,具体该怎么操作呢?
在鸿蒙中,衔接ETS代码和C代码之间的这一层转换叫做NAPI,对应于Android中的JNI。
调用SO里的方法
首先我们拿到SO,放到项目对应的lib目录下,以libentry为例,如图:
接着呢,需要定义.d.ts文件来声明SO中的方法,以便在ETS中使用。
我们在src目录下对应位置建立.d.ts文件和oh-package.json5文件,路径如图。注意路径必须在cpp/types下,types 下的文件夹名字随意命名。
其中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里进行配置,如图红框所示。
注意配置完了后,运行一下将SO加载到项目中。
然后我们在项目中就可以使用方法了。
代码文件中import的文件是我们在oh-package.json5中定义的这个别名,如下图红框。
代码中使用: