将第二个 JNI 库包含到我的 Android 项目 (OpenCV) 后出现错误

2023-12-14

我正在尝试将 OpenCV 添加到我现有的 Android 项目中,但在合并它们时遇到以下错误:

12-08 16:15:21.951 22052-22052/ai.inbi.face_recognition_robot E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                      Process: ai.inbi.wonderful_face_recognition_robot, PID: 22052
                                                                                      java.lang.UnsatisfiedLinkError: Couldn't load uvcNative from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/ai.inbi.wonderful_face_recognition_robot-1.apk"],nativeLibraryDirectories=[/data/app-lib/ai.inbi.wonderful_face_recognition_robot-1, /vendor/lib, /system/lib]]]: findLibrary returned null
                                                                                          at java.lang.Runtime.loadLibrary(Runtime.java:358)
                                                                                          at java.lang.System.loadLibrary(System.java:526)

I tried to manually comment out all references to OpenCV but unless I delete all OpenCV files from my libs folder the existing library (com.qihancloud.opensdk) fails to find it's own library functions. The folder structure of my libraries is like this: project folder structure

如果我在编译之前删除 OpenCV 库文件,一切都会正常。 另外,我的独立 OpenCV 项目正在运行,但一旦我尝试将它们组合起来,它就无法执行。

我的应用程序 build.gradle 文件可以在这里看到:https://pastebin.com/Z7hPH3vy

和我的 CMakeLists.txthttps://pastebin.com/gGwgWtxP


该错误意味着该文件libuvcNative.so尚未与您的 APK 一起安装。发生这种情况的根本原因多种多样。

你的情况完全一样此处描述. The 奇函OpenSDK_1.1.8.0.aar只有一个armeabi的版本libuvcNative.so。修复方法是更改​​第 15 行构建.gradle to read

 abiFilters 'armeabi'

但我必须承认你的CMakeLists.txt我很困惑。为我,

set_target_properties(lib_qihan PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR} /libs/QihanOpenSDK_1.1.8.0.aar)

不起作用。要想真诚,

set_target_properties(lib_opencv PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR} /libs/${ANDROID_ABI}/libopencv_java3.so)

也不符合我的书。对于后者,我相信您只是在复制/粘贴脚本时添加了一个空格。

对于前者,我知道一个特殊的trick拥有一个so从导入的文件aar在本机构建中使用。

我相信你的working版本不仅丢弃了所有 OpenCV 库,而且也不构建libnative-lib.so。这边走,cmake从不寻找libuvcNative.so,但这个本机库仍然与 APK 一起部署,因为aar is a compiled您的应用程序的依赖性。我猜想其中一些旗函OpenSDK类显式调用

System.loadLibrary("uvcNative")

If your libnative-lib.so不使用外部符号libuvcNative.so,你不需要我上面提到的技巧,也不需要提及旗函OpenSDK完全在你的CMakeLists.txt.

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

将第二个 JNI 库包含到我的 Android 项目 (OpenCV) 后出现错误 的相关文章

  • StrictMode 策略违规:我的应用程序中存在 android.os.strictmode.LeakedClosableViolation?

    Android 开发新手 第一次在我的应用程序上尝试 StrictMode 我注意到以下内容 并想知道这是否是我的应用程序或库中的问题 我不太清楚 谢谢你 D StrictMode StrictMode policy violation a
  • android中向sqlite中插入大量数据

    目前 我必须一次向我的 Android 中插入超过 100 亿条数据 然而 内存不足的问题会使程序崩溃 sqlite 插入测试非常简单 只需使用 for 循环生成 sql 插入命令并通过 开始 和 提交 进行包装 private Array
  • Android - 从资产中解析巨大(超大)JSON 文件的最佳方法

    我正在尝试从资产文件夹中解析一些巨大的 JSON 文件 我如何加载并添加到 RecyclerView 我想知道解析这种大文件 大约 6MB 的最佳方法是什么 以及您是否知道可以帮助我处理此文件的良好 API 我建议您使用GSON lib h
  • CardView 圆角获得意想不到的白色

    When using rounded corner in CardView shows a white border in rounded area which is mostly visible in dark environment F
  • 无法获取log.d或输出Robolectrict + gradle

    有没有人能够将 System out 或 Log d 跟踪从 robolectric 测试输出到 gradle 控制台 我在用Robolectric Gradle 测试插件 https github com robolectric robo
  • 谷歌坐标认证

    当我尝试连接到 Google 坐标时 总是出现异常GoogleAuthException 我拥有 Google 地图协调中心许可证 我确实使用我的包应用程序名称和 SHA1 在 google 控制台中创建了我的客户端 ID 我将权限添加到清
  • 如何以编程方式检查 AndroidManifest.xml 中是否声明了服务?

    我正在编写一个库 该库提供了一项服务 其他开发人员可以通过将其包含在他们的项目中来使用该服务 因此 我无法控制 AndroidManifest xml 我在文档中解释了要做什么 但一个常见的问题是人们忽略了将适当的 标记添加到其清单中 或者
  • 如何在android中获取Camera2 API的当前曝光

    In android hardware Camera旧的 我使用下面的代码获取当前曝光并获取它Camera Camera Parameters param mCamera getParameters currentExposure para
  • 在画布上绘图

    我正在编写一个 Android 应用程序 它可以在视图的 onDraw 事件上直接绘制到画布上 我正在绘制一些涉及单独绘制每个像素的东西 为此我使用类似的东西 for int x 0 x lt xMax x for int y 0 y lt
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • 尝试将相机切换回前面但出现异常

    尝试将相机切换回前面 但出现异常 找不到 问题请检查并帮助 error 01 27 11 49 00 376 E AndroidRuntime 30767 java lang RuntimeException Unable to start
  • 获取当前 android.intent.category.LAUNCHER 活动的实例

    我创建了一个库项目 并在多个应用程序之间共享 我实现了一个简单的会话过期功能 该功能将在一段时间后将用户踢回到登录屏幕 登录屏幕活动是我的主要活动 因此在清单中它看起来像这样
  • 如何使用 IF 检查 TextView 可见性

    我有一个 onCheckedChangeListener 来根据选择的单选按钮显示文本视图 我有 1 个疑问和 1 个难题 想知道是否有人可以帮助我 问题 您能否将单选组默认检查值设置为 否 单选按钮 以便一开始就不会检查任何内容 问题 如
  • 在 SQLite 中搜索时排除 HTML 标签和一些 UNICODE 字符

    更新 4 我已经成功运行了firstchar例如 但现在的问题是使用regex 即使包含头文件 它也无法识别regex操作员 有什么线索可以解决这个问题吗 更新 2 我已经编译了sqlite3我的项目中的库 我现在正在寻找任何人帮助我为我的
  • 如何使用InputConnectionWrapper?

    我有一个EditText 现在我想获取用户对此所做的所有更改EditText并在手动将它们插入之前使用它们EditText 我不希望用户直接更改中的文本EditText 这只能由我的代码完成 例如通过使用replace or setText
  • 在activity_main.xml中注释

    我是安卓新手 据我所知 XML 中的注释与 HTML 中的注释相同 使用 形式 我想在 Android 项目的 Activity main xml 配置文件中写一些注释 但它给了我错误 值得注意的是 我使用的是 Eclipse 但目前 我直
  • 如何确定对手机号码的呼叫是本地呼叫还是 STD 或 ISD

    我正在为 Android 开发某种应用程序 但不知道如何获取被叫号码是本地或 STD 的号码的数据 即手机号码检查器等应用程序从哪里获取数据 注意 我说的是手机号码 而不是固定电话 固定电话号码 你得到的数字是字符串类型 因此 您可以获取号
  • Crashlytics 出现 Android Studio 构建错误

    我正在尝试将 CrashLytics 与 Android Studio 和 gradle 一起使用 但出现一个令人困惑的错误 java lang NoSuchMethodError 我的 build gradle 是 buildscript
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview

随机推荐

  • 在Python中创建HTTPS代理服务器

    我正在尝试在 python 中创建 HTTPS 代理服务器 我创建了以下适用于 HTTP 的脚本 usr bin env python3 coding utf 8 import socket from threading import Th
  • C# - for 循环以奇怪的间隔冻结

    我正在研究问题14在 Project Euler 上 我的代码似乎会以随机的间隔冻结 没有明显的原因 static void Main int maxNum 0 int maxLength 0 for int x 2 x lt 100000
  • 如何强制 jqGrid 4.10.1-pre 始终对 ' 字符进行编码[重复]

    这个问题在这里已经有答案了 免费jqgrid使用设置 autoencode true 网格定义包含 grid jqGrid url admin API Entity datatype json editurl admin Detail Ed
  • C# 纸牌游戏中的最佳纸牌选择

    问题在于在游戏的每个时刻遵循以下规则选择最佳选项 您只能选择最左边或最右边的卡 你的对手总是先选 并且总是从最左边或最右边的牌中选择最大的牌 如果是平局 它将选择最右边的 考虑到这并不总是最好的选择 有时不可能获胜 但无论如何 你必须通过与
  • 编译一个Rcpp包,调试符号中包含行信息

    我不知道如何为我的 R 包提供共享库调试符号源行信息 我缺少什么 我创建以下内容src Makevars file PKG CXXFLAGS O0 ggdb PKG LIBS O0 ggdb 我使用编译包R CMD INSTALL no m
  • 为什么 Spring Batch 为每个线程使用 1 个数据库连接?

    为什么 Spring Batch 为每个线程使用 1 个数据库连接 Stack Java 8 春季启动 1 5 春季批次 3 0 7 光CP 2 7 6 数据源配置 batcdb postgres 读数据库 Oracle writedb p
  • 以编程方式从 iPhone 应用程序访问设备音乐文件

    我想访问 iPhone 上可用的音乐文件并将其列出 或 将文件放入我的 iPhone 应用程序中并开始播放 有可能做到吗 类似于我们使用 UIImagePickerController 委托方法从设备相册访问图像的方式 谢谢你 您可以参考M
  • 是否可以使用 try/catch 捕获段错误?

    我做了这个测试来看看发生了什么 try int x 0 x 1234 catch cout lt lt OK 但它抛出了段错误 为什么它没有捕获段错误 不 你不能 A SEGFAULT不是一个常规的例外 您显示的代码只是未定义的行为 任何事
  • 没有标签的结构

    如果我声明一个这样的结构 struct int a char b ident 该结构有类型吗 即未指定的类型 默认类型等 相反 如果我声明一个结构 例如 struct J int a char b ident 我们可以说ident是一个类型
  • JsHint 警告:正则表达式文字可能会与“/=”混淆

    我的 Javascript 代码中有这一行 var regex Hello n JsHint 在这一行给了我一个警告 A regular expression literal can be confused with 但我不知道这个正则表达
  • 如何解析GDB中的段:偏移地址

    gdb info registers ds ds 0x7b 123 gdb disassemble Dump of assembler code for function printf plt 0x0804831c lt 0 gt jmp
  • 播放错误时关闭 MPMoviePlayerViewController

    我的 MPMovies PlayerViewController 遇到问题 如果控制器在指定的 URL 处找不到电影 它会显示白屏 并且我无法使其关闭 这就是我启动电影播放器 的方式 void playVideo NSString path
  • 多线程不起作用

    我正在制作一个简单的多线程程序来解释线程的工作原理 我想要两个计数器同时计数 但它不起作用 它仅在我使用时才有效 CheckForIllegalCrossThreadCalls False 但是 我想以正确的方式编程 Code Dim Th
  • nginx:未知指令“位置”

    这是我的代码 从第 35 行开始 location index index php root home body if request filename js css images robots txt index php rewrite
  • 将 Unicode 代码点数字转换为 Unicode 字符

    我正在使用 Python 3 中的 argparse 库从命令行参数读取 Unicode 字符串 这些字符串通常包含 普通 Unicode 字符 扩展拉丁语等 但有时 特别是当字符属于从右到左的脚本时 将字符串编码为 Unicode 代码点
  • PyQt类继承

    我很难理解 Python PyQt 的类继承 我有一个MainWindow和一个弹出窗口QWidget 我想与互动self label1 of the MainWindow之后QWidget在弹出窗口中打开 但我不知道该怎么做 我只知道相反
  • Delphi:解析这个 html 表的一些技巧?

    有时我试图从这个 html 表中获取数据 我尝试了付费和免费的组件 我尝试做一些编码 但也没有结果 我有一个类可以直接为 ClientDataSet 抛出 html 表 但是对于这个表它不起作用 有人知道如何获取此 html 表中的数据吗
  • g++5 中 std::unordered_set 的不完整类型编译错误,在 clang++ 中编译

    考虑与之前的 SO 问题相关的代码C 循环依赖与邻接列表表示的混淆 include
  • & 和 | 是什么意思?运营商做什么?它们与 && 和 || 有什么不同?迅速

    我见过很多例子 or 都用过 但是没明白它们是用来做什么的 我知道什么 and 意思是 但我想知道它们和单字符对应物之间的区别 另外 如果有人能向我展示一些例子 那就太好了 and 使用 请在 Swift 2 中 谢谢 See the 关于
  • 将第二个 JNI 库包含到我的 Android 项目 (OpenCV) 后出现错误

    我正在尝试将 OpenCV 添加到我现有的 Android 项目中 但在合并它们时遇到以下错误 12 08 16 15 21 951 22052 22052 ai inbi face recognition robot E AndroidR