一、配置步骤(个人爱好且用于生成.SO):
- 先配置项目 build.gradle中的dependencies
- 配置APP/build.gradle
- 配置NDK,同时会自动build项目
二、生成.h
写好native方法
再\app\src\main\java目录下打开控制台,输入 javah -d ../jni (native方法所在类的名字,需要加上包名)
这里可能会报找不到该类文件的错,我遇到的原因有:
1.写好native方法之后没有生成classes文件
2.输入javah命令的位置不对(仅限此命令,因为生成.h文件的方法好多种)
三、使用.SO文件
- 生成好.h文件,创建.c文件完成接口(尽量用c,不要用c++完成功能,C++文件容易报错,具体原因不清楚,只是试过换了一次就好了)
- 编译项目没有报错,生成APK,但是一用到native方法有以下几种错(额,只记得几个错,以后遇到了上图):
1.找不到.so动态库
2.虚拟机加载不了.so
……
Androidstudio2.1默认生成的.SO文件在:\app\build\intermediates\binaries\debug\lib下,
要么在APP目录下创建libs文件夹,将内核对应的SO库放到该目录下。
要么在build. gralde中配置SO库的路径。
查看配置文件中SO库的名称是否一致。
四、引用自己写的JNIdemo
- 把demo当module导入,可能build.gralde配置有问题
- 把jni demo变成JAR包,导入到项目中的app/libs下
- 把生成好的SO库直接拷贝到app/libs下,但是此时需要在你项目中配置
ndk {
moduleName "SO库的名字"
}
并且指定SO库的路径
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
以上全部是个人踩得坑,还好多有点不记得了,想起来再加,线记着。