Android studio:UnsatisfiedLinkError:findLibrary 返回 null - 加载本机库

2023-11-24

我正在 Android Studio 中制作一个使用两个库的应用程序。带有 Android 包装器和 jar 库的本机库。 由于某种原因,如果将其他 jar 库编译到项目中,则本机库将不会加载。因此,如果我仅使用本机库运行应用程序,则一切正常。我将另一个 jar 库添加到我的 gradle 文件中,然后出现 UnsatisfiedLinkError:

java.lang.UnsatisfiedLinkError: Couldn't load MobileOcrEngine from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.app-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.app-1, /vendor/lib, /system/lib]]]: findLibrary returned null

当我使用这个时,我的应用程序运行良好:

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'src/main/jniLibs')
    compile 'com.android.support:support-v13:21.0.2'
    compile project(':wheel')
}

当我尝试时出现错误:

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'src/main/jniLibs')
    compile 'com.android.support:support-v13:21.0.2'
    compile project(':wheel')
    compile files('libs/realm-0.78.0.jar')
}

或者当我尝试使用相同的库但使用 Maven 存储库时:

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'src/main/jniLibs')
    compile 'com.android.support:support-v13:21.0.2'
    compile project(':wheel')
    compile 'io.realm:realm-android:0.78.0'
}

或者如果我尝试将 jar 放在 jniLibs 文件夹中:

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'src/main/jniLibs')
    compile 'com.android.support:support-v13:21.0.2'
    compile project(':wheel')
}

我不知道问题的根源在哪里。使用两个库之一,Android Studio 还是我做错了什么?

Note:我知道 StackOverflow 上有很多关于 UnsatisfiedLinkErrors 的问题,但这些问题都没有为我的问题提供解决方案。如果它是我使用的唯一库,那么加载本机库没有问题......


我发现了问题。我想添加的另一个 jar 在内部使用一个 C++ 库,支持armeabi, armeabi-v7a, x86 and mips。我一直使用的本机库仅受支持armeabi.

我用于测试的设备是armeabi-v7a设备。当我使用本机库时,设备一直在我的 libs 目录的armeabi-v7a 中检查该库。如果在那里找不到它,它会尝试armeabi 目录。

当我加载支持 4 种不同架构的其他 jar 时,设备会加载armeabi-v7a 库。当它找到该 jar 的armeabi-v7a 库时,它将尝试加载相同架构的本机库。如果没有找到该库,它不会检查armeabi目录作为备份,因此findLibrary返回 null,因此UnsatisfiedLinkError.

我通过为armeabi架构创建一个目录并将armeabi-v7a目录的.so-library复制到其中来解决这个问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android studio:UnsatisfiedLinkError:findLibrary 返回 null - 加载本机库 的相关文章

随机推荐

  • 验证错误:捆绑包包含不允许的嵌套捆绑包

    作为后续我的另一个问题 我在提交 iOS 8 应用程序 包括共享扩展和框架目标 时仍然遇到问题 在尝试提交时 我收到上述错误消息 其他有我问题的人 如前面链接的问题中指出的 也有同样的问题 但以与我的案例无关的方式解决了它 该错误消息暗示我
  • 调用“Class.forName”时未选中强制转换警告

    我的代码如下 package com foo public class TestComposition public static void main String args try Class
  • 在选择选项上绑定点击事件

    我在制作时遇到问题clickHTML 上的事件option元素工作 即使是一个简单的console log hello 行不通的 我正在尝试这样做 mySelect option bind click function console lo
  • 如何列出模块中的所有函数?

    我的系统上安装了一个 Python 模块 我希望能够查看其中有哪些可用的函数 类 方法 我想打电话给help作用在每一个上 在 Ruby 中我可以做类似的事情ClassName methods获取该类上所有可用方法的列表 Python中有类
  • EnableSessionState = ReadOnly - 可能的副作用?

    我们有一个相当大的基于 Web 的解决方案 在 Net 4 5 上运行 最近 当我们检查一个性能问题时 系统似乎在任何给定时间 每个客户端 只服务一个请求 我们了解到造成这种情况的原因是会话状态 通过将 EnableSessionState
  • Android 应用在 Google Play 上自动更新和权限更改

    我知道 当至少添加一项新权限时 该应用程序将不会自动更新 用户必须手动更新它 当应用程序的权限发生更改时 您将可以 手动更新 删除权限怎么样 我当前的应用程序N版发行了 在下一个版本中 删除了一项权限 用户是否会N版获得自动更新 Edit
  • 如何在groovy中检索嵌套属性

    我想知道在 Groovy 中检索嵌套属性的最佳方法是什么 采用给定的对象和任意 属性 字符串 我想要这样的事情 someGroovyObject getProperty property1 property2 我很难找到其他人想要这样做的例
  • Toast.show() 未在模拟器中显示消息

    这似乎适用于 Android 6 Marshmallow 设备小米红米 3S 看起来像是模拟器问题 但在任何其他意义上它并不是真正的行为不当 我是Android开发的初学者 了解不多 我已经确认我的应用程序的通知已打开 眼镜 API 级别
  • 如何在 Pandas 中连接包含列表(系列)的两列

    我想连接 pandas 中的两列 每列由 1x4 元素的浮点列表组成 我想合并两列 使输出为 1x8 的向量 下面显示了数据框的片段 ue bs 1 27932459e 01 7 83234197e 02 3 24789420e 02 4
  • 使用 XSL 对 XML 文件进行哈希处理

    我正在尝试找到一种方法来 散列 XML 文件的内容 其根源是需要比较传入的一些文本节点与我希望确保校验和相同的文本节点 传入的文本节点已从表单提交返回 我需要确保它们没有更改 在合理范围内 排除冲突 建筑很糟糕 所以请不要问它 我被锁定在给
  • 如何将div垂直换行然后水平换行

    我需要水平显示我的网站中的搜索结果数据 我的网站遵循 Metro UI 方法 因此我希望数据水平流动而不是垂直流动 我的要求如下图所示 结果数据是动态的 我想首先根据父 div 高度垂直绘制 div 然后水平绘制 类似于WPF包裹面板的东西
  • 如何使用Spring表达式语言获取作业ID?

    我想使用 spring 表达语言获取工作 ID 我试过 jobExecutionContext jobId 但它不起作用 单独使用 SpEL 无法访问作业 ID 您可以使用 JobExecutionListener 将其添加到executi
  • System.currentTimeMillis() 如何获取时间

    是方法吗System currentTimeMillis 是否实现对底层操作系统进行系统调用以接收当前时间 我之所以这么问 是因为据我所知 该方法运行得相当快 只需要 6 个 CPU 时钟 但这没有意义 因为众所周知系统调用很慢 我在这里缺
  • 如何在 Android 上进行异步 URL 连接?

    我正在使用以下类连接到我的网络服务 我想让这个异步 我怎样才能做到这一点 package org stocktwits helper import java io BufferedReader import java io IOExcept
  • tmux 绑定分号

    有什么办法可以绑定吗 059 到 tmux 中的命令 默认绑定到last pane 但是 我想将其重新绑定到 select pane R 我尝试将以下内容放入我的 tmux conf 中 但似乎都不起作用 bind 059 select p
  • 在 Html.BeginForm() 中使用 DELETE 表单方法?

    我想尽可能使用适当的 HTTP 方法 在这种情况下 当单击按钮删除某些内容时 我想使用属性触发控制器操作 HttpDelete 但是 我似乎无法使用此方法创建表单 使用 Razor 语法 这FormMethod枚举没有选项Delete并且执
  • 如何在Makefile中添加#define?

    我有一个 C 项目 我需要在一些 CXX 文件中定义一个变量 我有近 800 个文件 我需要为其中 200 个文件定义一个变量 所以我想在 makefile 中定义它 那么我们怎样才能做到这一点呢 只需添加 Dxxx yy在命令行上 xxx
  • 在AppDelegate.m中获取屏幕当前显示的UIViewController

    目前的UIViewController屏幕上的应用程序需要通过设置一些徽章视图来响应来自 APN 的推送通知 但我怎样才能得到UIViewController在方法中application didReceiveRemoteNotificat
  • 每次点击取消按钮时,搜索栏都会向下跳一行

    我已经实现了一个 UISearchBar 来搜索来自外部 API 的项目目录 搜索功能按预期工作 但问题是 每次我按下搜索栏文本字段右侧的取消按钮时 整个搜索栏都会向下移动一行 看起来就像推动了整个搜索栏一样 表格视图也向下 因此 如果我在
  • Android studio:UnsatisfiedLinkError:findLibrary 返回 null - 加载本机库

    我正在 Android Studio 中制作一个使用两个库的应用程序 带有 Android 包装器和 jar 库的本机库 由于某种原因 如果将其他 jar 库编译到项目中 则本机库将不会加载 因此 如果我仅使用本机库运行应用程序 则一切正常