在 AS 中正确加载 so 文件, native 函数仍然 Cannot resolve corresponding JNI function?

2016-02-01 15:38:14 +08:00
 SusieMe

事情是这样的,从 eclipse 转到 as 后加载 so 文件,但是 native 函数依然报 Cannot resolve corresponding JNI function 这个错误
关于如何加载 so 文件,我是这样做的:
方法一:将 so 文件直接放在 jniLibs 目录下
方法二:将 so 文件放在 app/libs 目录下,但是在 build.gradle 里加入
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
可是使用这两种方法, native 函数依然报错,到底是为什么?有没有大神能提点一二啊!!!哭晕了〒▽〒

14818 次点击
所在节点    Android
5 条回复
SystemError
2016-02-02 10:43:41 +08:00
Android Studio 不同版本的 JNI 的 gradle 语法不一样。既然你说的 LoadLibrary 没问题了,那这个可以排除。

还有可能是你的 JNI_EXPORT 声明不对,与 Java 层对应的包路径不对。

找参考资料,很多事都有给出完整例子的。
SusieMe
2016-02-02 13:14:46 +08:00
@SystemError 话说我确实改过包名来着~可是我看 Android.mk 文件里压根没有涉及到包名之类的啊~
allenx
2016-02-02 15:58:05 +08:00
不是在 Android.mk 里面,而是在源代码里面, JNI 导出函数的命名必须与 java 的包名相对应。
SusieMe
2016-02-02 16:53:35 +08:00
@allenx 我看到了,已经修改了,重新编译出 so ,可是 jni 函数还是报错~~
Tobey
2016-04-03 14:04:34 +08:00
@SusieMe 我也遇到了这个问题《求解决方法!!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/254805

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX