【问题标题】:Use .so library in Android Studio 0.8.2在 Android Studio 0.8.2 中使用 .so 库
【发布时间】:2014-07-23 09:12:04
【问题描述】:

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

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

我没有任何其他文件。

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

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

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

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

我通过使用来调用它

static {  
    System.loadLibrary("fourier");  
}  

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

【问题讨论】:

  • 他们删除了文件夹libs/armeabi 吗?
  • 你到底是什么意思?
  • 看起来不受支持。看这里:stackoverflow.com/questions/16683775/…
  • 感谢您的快速评论。但我已经这样做了。我目前在 /src/main/jniLibs 以及 /native-libs 中有 libfourier.so。并添加了所有脚本功能。他们仍然没有工作......

标签: android android-studio native-code


【解决方案1】:

没有真正的魔法。只需像其他所有库一样将其放入 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 包。并将新的 so-file 添加到 libs/armeabi。

因此,如果您使用 NATIVE CODE/LIBRARY,我建议您只需使用真实设备来运行测试调试(不要忘记在设备上启用调试)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-04
    • 1970-01-01
    • 2023-03-17
    • 2018-07-14
    • 2016-08-02
    • 2014-10-13
    • 1970-01-01
    相关资源
    最近更新 更多