如下的第一行。
如果不进入这个目录等会运行javah的时候会提示:
错误: 找不到 'com.lcj.ndk_demo_2.HelloNDK' 的类文件。
4、
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生成的cla
5、ss文件都在这里,这是一个相对路径)
com.lcj.ndk_demo_2.HelloNDK 是class文件的文件名(根据之前的java文件生成的)
使用jni作为输出目录后的截图如下:
头文件出现了!!
下图是头文件内容。里面有一个函数声明,它是自动生成的,名字不要改动!!
5、编写C源文件com_lcj_ndk_demo_2_HelloNDK.c。注意这里的函数名称一定要从之前生成的h文件里面复制过来,以免出错。
6、配置build.gradle文件,加入下图中的语句。
moduleName 就是将来生成的so文件名称的一部分,修改它
6、可以修改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、 运行!!成功!!