【问题标题】:How can I tell Android Studio NOT to look in the jniLibs folder for a specific library?如何告诉 Android Studio 不要在 jniLibs 文件夹中查找特定库?
【发布时间】:2016-10-15 16:27:59
【问题描述】:

我是 android studio 的新手,正在开发一个使用 OpenCV 的现有项目。我需要为 Android 实现 CMU 的 Pocketsphinx,并且按照他们提供的安装步骤,我在我的项目的 /src 目录中创建了一个 jniLibs 文件夹,并在其中放置了用于 pocketsphinx 的适当文件。

这就是问题所在 - 当我这样做时,我突然收到以下错误消息:

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.robodoot.dr.facetracktest-2/base.apk"],nativeLibraryDirectories=[/data/app/com.robodoot.dr.facetracktest-2/lib/arm, /data/app/com.robodoot.dr.facetracktest-2/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]] couldn't find "libjniopencv_core.so"

如果我在 /src 目录中没有 jniLibs 文件夹,我不会收到此错误,但当然我会从 pocketSphinx 收到一个错误,说它找不到所需的 .so 文件。

更重要的是,在查看了 OpenCV 的 SDK 之后,我注意到没有“libjniopencv_core.so”这样的文件。它在任何地方都不存在,还有其他 .so 文件,但没有一个具有该名称。即使我将所有 armeabi 和其他目录从 openCV 安装到我的新 jniLibs 文件夹中,我仍然会收到此错误消息。

如何告诉 android studio 仅加载 pocketsphinx jniLibs 文件,而忽略在该目录中搜索 openCV .so 文件?

【问题讨论】:

    标签: android opencv android-gradle-plugin pocketsphinx-android


    【解决方案1】:

    您可以通过在 gradle 中添加以下代码来做到这一点

    android {
        ...
        defaultConfig {
            ...
            ndk {
                abiFilters "armeabi-v7a", "x86","armeabi"
            }
    
            packagingOptions {
                exclude "lib/arm64-v8a/mysofile.so"
            }
        }
    }
    

    将 arm64-v8a/mysofile.so 替换为您要排除的任何内容。

    【讨论】:

    • 您知道如何根据我上面提供的错误消息找到它正在查找的目录吗?我尝试了 nativeLibraryDirectories 路径中的所有选项,但它们似乎都不起作用。
    • @Ajv2324 你能告诉我你的文件夹结构和更多日志吗
    【解决方案2】:

    如何告诉 android studio 仅加载 pocketsphinx jniLibs 文件,而忽略在该目录中搜索 openCV .so 文件?

    您不应忽视重要文件。 opencv需要libjniopencv_core.so。

    更重要的是,在查看了OpenCV的SDK后,我发现没有“libjniopencv_core.so”这样的文件。

    它必须与其他重要的so文件一起在opencv-android-arm.jar中。

    不清楚为什么文件冲突,应该是gradle的一些问题。您需要检查 APK 的内部结构,以便文件实际包含在其中。您很可能会尝试打包不同的架构,例如 armeabi 和 armeabi-v7。您可能需要从同一架构打包 .so 文件。

    【讨论】:

      猜你喜欢
      • 2019-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-23
      • 2016-11-15
      • 1970-01-01
      • 2015-10-31
      相关资源
      最近更新 更多