AndroidStudio环境下的jni调用(NDK)的方法 - 图文

更新时间:2023-12-02 06:36:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

注意:如果要在AndroidStudio里面使用terminal(终端)的话,必须先配置环境变量。AS中的terminal其实和windows带的中断是一样的,只不过内嵌到了AS上。

1、配置java环境变量(可以百度,配置完成必须重启terminal才能运行javac、javah等命令)。 2、写好如下HelloNDK.java文件(这个文件演示了jni的调用)

3、然后执行在AndroidStudio中执行Build-->Make Project,生成class文件。

生成class文件放在了 Project的目录\\ndk_demo_2\\build\\intermediates\\classes\\debug\\com\\lcj\\ndk_demo_2中,并且是隐藏的。(不查看这个文件也没关系,当然前提是执行没有错误)

4、生成h文件

4.1在AS的terminal输入javah,然后回车。----------------------------------------这一步可以省略,我这里将javah怎么使用。

出现如下帮助文档。

这里出现了javah的使用帮助。

我们要用的命令是javah -d

-classpath

javah是生成jni头文件的命令;

-d是生成的头文件存放的目录(这个目录如果事先没有建立,那么运行成功会自动新建);

是前面-d选项的目录名称,如果目录是src的话,不要写成!!,直接写src就好; -classpath从中加载类的路径命令;

是需要生成头文件的class文件的目录。

4.2、进入到使用cd命令进入HelloNDK.java的文件夹main。

cd

如下的第一行。 如果不进入这个目录等会运行javah的时候会提示:

错误: 找不到 'com.lcj.ndk_demo_2.HelloNDK' 的类文件。

4.3、运行javah命令:上图第二行。

javah -d jni -classpath ..\\..\\build\\intermediates\\classes\\debug com.lcj.ndk_demo_2.HelloNDK 如上图第二行。只要什么错误都不提示说明运行成功!! 这时就可以去查看main目录下是不是多了一个jni文件夹,里面就是生成的头文件了。 jni 是生成的头文件需要存放的文件夹(一般取名jni才对)

..\\..\\build\\intermediates\\classes\\debug 是class所在目录(Build—>Make Project生成的class文件都在这里,这是一个相对路径) com.lcj.ndk_demo_2.HelloNDK 是class文件的文件名(根据之前的java文件生成的)

使用jni作为输出目录后的截图如下:

头文件出现了!!

下图是头文件内容。里面有一个函数声明,它是自动生成的,名字不要改动!!

5、编写C源文件com_lcj_ndk_demo_2_HelloNDK.c。注意这里的函数名称一定要从之前生成的h文件里面复制过来,以免出错。

6、配置build.gradle文件,加入下图中的语句。

moduleName 就是将来生成的so文件名称的一部分,修改它可以修改so的文件名。 ldLibs 目前不知道是什么

abiFilters 是生成os文件的平台,这里选择了3种。

7、配置ndk路径。打开local.properties,加入NDK的路径(ndk需要单独下载,我在网上下载ndk后放在了和sdk相同的路径下)

8、生成os文件。

8.1、Build->Make Project生成so文件,这时如果只有一个c文件,就会报错,这是一个bug,解决办法很简单,随便新建一个空的c文件就行了。图中bugUtil.c就是我建的空文件。 再次运行,没有出错。

8.2、查看 工程目录\\ndk_demo_2\\build\\intermediates\\ndk\\debug\\lib目录里面各有一个os文件

9、调用jni。

10、运行!!成功!!

本文来源:https://www.bwwdw.com/article/b8vt.html

Top