我可以使用本机库吗?那么在没有NDK的android项目中?

我可以使用本机库吗?那么在没有NDK的android项目中?,android,shared-libraries,Android,Shared Libraries,我有一个在eclipse环境中使用android SDK构建的android项目,现在我想在这个项目中添加一个预构建库(.so),我应该使用NDK吗?您通常不需要使用NDK来使用来自Java的本机库(.so文件)。只有当您想要创建/重新编译.so文件或者.so文件没有为Java提供任何方法实现时,才需要它 你的图书馆从哪里来?jar或Java类至少应该随它一起提供 为了使用Java中的.so文件,您需要知道它定义了哪些Java方法,以便从Java代码中定义与本机相同的.so文件,从.so文件用于

我有一个在eclipse环境中使用android SDK构建的android项目,现在我想在这个项目中添加一个预构建库(.so),我应该使用NDK吗?

您通常不需要使用NDK来使用来自Java的本机库(.so文件)。只有当您想要创建/重新编译.so文件或者.so文件没有为Java提供任何方法实现时,才需要它

你的图书馆从哪里来?jar或Java类至少应该随它一起提供


为了使用Java中的.so文件,您需要知道它定义了哪些Java方法,以便从Java代码中定义与本机相同的.so文件,从.so文件用于的相同包名的相同类中定义与本机相同的.so文件。

不,只需在
res
Java
文件夹的相同级别上创建一个
jniLibs
文件夹,然后将.so文件放入其中。

是的,我收到了错误消息java.lang.unsatifiedLinkError:…现在,您是如何尝试加载它的?你把.so放在哪里了?在Libs中创建一个armeabi文件夹,并在我的活动类中将本机方法定义为public。最后,调用本机方法或多或少是正确的。您是否调用了
System.loadLibrary(“nameoflb”)
?是的,我调用了,相同的错误是Java方法名称与类名和包名相同,但我通过在我的项目中创建第二个包解决了这个问题,该包与.so lib的原始包同名,IDA pro de编译器对查找原始包名几乎没有帮助:)