事情是这样的,从 eclipse 转到 as 后加载 so 文件,但是 native 函数依然报 Cannot resolve corresponding JNI function 这个错误
关于如何加载 so 文件,我是这样做的:
方法一:将 so 文件直接放在 jniLibs 目录下
方法二:将 so 文件放在 app/libs 目录下,但是在 build.gradle 里加入
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
可是使用这两种方法, native 函数依然报错,到底是为什么?有没有大神能提点一二啊!!!哭晕了〒▽〒
1
SystemError 2016-02-02 10:43:41 +08:00 via iPhone
Android Studio 不同版本的 JNI 的 gradle 语法不一样。既然你说的 LoadLibrary 没问题了,那这个可以排除。
还有可能是你的 JNI_EXPORT 声明不对,与 Java 层对应的包路径不对。 找参考资料,很多事都有给出完整例子的。 |
2
SusieMe OP @SystemError 话说我确实改过包名来着~可是我看 Android.mk 文件里压根没有涉及到包名之类的啊~
|
3
allenx 2016-02-02 15:58:05 +08:00
不是在 Android.mk 里面,而是在源代码里面, JNI 导出函数的命名必须与 java 的包名相对应。
|