在Android Studio 0.8.2中使用.so库

时间:2014-07-23 09:12:05

标签: android android-studio native-code

我在stackoverflow上多次测试了所有以前显示的答案。他们都没有工作。 我使用 Android Studio 0.8.2 和最新的 Gradle版本

我有 libfourier.so 。这是一个用 .c 制作的本地库。

我没有任何其他文件。

它已在以前的应用程序中使用并且确实有效。

我需要这个库,因为它可以执行快速傅里叶变换而输入不是2的幂。

这可能吗?如果是,怎么样?

目前我已将 libfourier.so 放入/libs/armeabi/libfourier.so

我用

来称呼它
static {  
    System.loadLibrary("fourier");  
}  

但我收到 UnsatisfiedLinkException ,说明找不到该库。

1 个答案:

答案 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 (不要忘记在设备上启用调试)