我在stackoverflow上多次测试了所有以前显示的答案。他们都没有工作。 我使用 Android Studio 0.8.2 和最新的 Gradle版本。
我有 libfourier.so 。这是一个用 .c 制作的本地库。
我没有任何其他文件。
它已在以前的应用程序中使用并且确实有效。
我需要这个库,因为它可以执行快速傅里叶变换而输入不是2的幂。
这可能吗?如果是,怎么样?
目前我已将 libfourier.so 放入/libs/armeabi/libfourier.so
我用
来称呼它static {
System.loadLibrary("fourier");
}
但我收到 UnsatisfiedLinkException ,说明找不到该库。
答案 0 :(得分:0)
没有真正的魔力。只需将它放在libs / armeabi / libfourier.so中,就像其他库一样。
每个人都说错了。
首先,立即在真实设备上找到该库。因此Android设备管理器和Genymotion中的模拟器显然无法找到这些库。或者应用程序未安装为* .apk。
对于顽固分子,肯定可以安装apk文件。但对于像我这样懒惰的人来说,真实设备就能解决问题。
其次,你必须确保你的包名在本机代码中的本机函数中对应,并在android代码中调用本机函数。
如果您使用Android intec.ugent.be.MyClass.nativeMethod()
,则应将您的原生方法命名为:Java_intec_ugent_be_MyClass_nativeMethod(..)
。如果您不在本机库中使用JNI_onLoad
,则会出现这种情况。
当然,您必须使用ndk-build
重建jni-package。并将新的so-file添加到libs / armeabi。
所以我建议你是否使用NATIVE CODE / LIBRARY只需使用REAL设备运行TEST DEBUG (不要忘记在设备上启用调试)