【问题标题】:How do you add a native library (.so) to android studio?如何将本机库 (.so) 添加到 android studio?
【发布时间】:2017-06-05 01:30:39
【问题描述】:

我目前收到以下错误:

java.lang.UnsatisfiedLinkError: nativeLibraryDirectories=[/data/app/com.example.ryane.jzy-1/lib/arm, /vendor/lib, /system/lib] couldn't find "libgluegen-rt.so"

在执行以下代码行时

System.loadLibrary("gluegen-rt");

我在 build.gradle 中包含以下内容

sourceSets {
    main {
        jniLibs.srcDirs = ["src/main/jniLibs", "$buildDir/native-libs"]
    }
}

并将我的 libgluegen.so 放在 src/main/jniLibs 中。根据错误,它似乎没有在我指定的目录中查找。有没有我遗漏的步骤?

【问题讨论】:

  • 尝试将jni.srcDirs = []添加到build.gradle sourceSets.main
  • 不幸的是,我仍然有同样的错误。我一直在阅读并注意到很多人在使用本机库时提到 .mk 文件。那些是必需的吗? @RustFisher
  • .mk 文件意味着您自己编译.so。那么您的项目中有本地库(如 C/C++ 文件)还是只有 .so 文件?您需要使用 NDK 工具编译 C/C++ 源文件。
  • 没有C/C++文件,只有.so
  • 你能粘贴.so文件路径吗?

标签: java android .so


【解决方案1】:

嗯...其实我想看看你的.so 路径...
例如,在我的 build.gradle jniLibs.srcDirs = ['src/main/libs']

.so 的路径是MyProj\app\src\main\libs\armeabi-v7a\libSmartAlgorithm.so

库/TARGET_ARCH_ABI

arm64-v8a
armeabi
armeabi-v7a
mips
mips64
x86
x86_64

【讨论】:

  • 我的错误是我将文件直接存储在 main\libs 而不是它们各自的体系结构目录中!非常感谢!
  • 嘿,我也想添加它们,但我不知道从哪里得到它们
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 2014-06-10
  • 2018-07-12
  • 1970-01-01
相关资源
最近更新 更多