将第二个 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) 后出现错误 的相关文章

  • GCM 无法唤醒设备

    我正在开发 GCM 应用程序 当设备不空闲时 即按电源按钮休眠 一切正常 但是 当我在设备空闲时发送消息时 设备不会唤醒 我做了以下事情 已验证服务器应用程序中的delay while idle未设置为true 每条消息使用不同的折叠键 多
  • Android模拟器中的互联网连接始终显示连接状态

    我尝试了多种方法来检查我的 Android 模拟器中的互联网连接 ConnectivityManager conMgr ConnectivityManager getSystemService Context CONNECTIVITY SE
  • 制作一个包含自定义对象列表的可分割类

    我在使列表对象可解析时遇到错误 我认为读取对象时发生错误 这是我的代码 public class TestSample implements Parcelable int intValue String stirngValue privat
  • android ndk 多点触控?

    我正在编写一个仅使用本机代码的应用程序 那么ndk中是否可以获取多点触控事件呢 我感觉我已经搜索了整个网络 但什么也没找到 有谁知道如何做到这一点 是的 您可以检查名为native activity查看如何获取输入事件 寻找engine h
  • Android:文本淡入和淡出

    我已阅读此 stackoverflow 问题和答案 并尝试实现文本淡入和淡出 Android中如何让文字淡入淡出 https stackoverflow com questions 8627211 how to make text fade
  • 在android中从JSON生成listview

    我对 Android 完全陌生 目前正在尝试从从我的服务器中提取的 JSON 数组生成列表视图 我已经阅读了很多教程 但没有运气 有一种独特的方法可以做到这一点 请您指出一些适合开始的资源 我读过了this http www josecgo
  • SQLite FTS4 使用特殊字符进行搜索

    我有一个 Android 应用程序 它使用 FTS4 虚拟表在 SQLite 数据库中搜索数据 它工作正常 但是当表中的数据包含特殊字符 如 或 时 SQLite MATCH 函数不会给出任何结果 我现在迷路了 谢谢 注意 默认的分词器真的
  • 在 android studio 中找不到 SDK 位置

    我刚刚在 android studio 中导入了我的 eclipse 项目 我一直这么说 Error SDK location not found Define location with sdk dir in the local prop
  • Android NDK 支持区域设置吗?

    我真正想做的就是使用格式化日期strftime x 以正确的顺序 在大多数平台上调用setlocale 足够 在 Android 上 我不断收到 美国日期 那么 Android 不支持语言环境吗 No setlocale and strft
  • 如何使用 Retrofit 解析嵌套 json....?

    我不知道该怎么办使用 Retrofit 解析 json 熟悉使用 Retrofit 解析简单的 json 但不熟悉解析嵌套Json using Retrofit 这是我的 Json 数据 current observation image
  • Android 无法解析日期异常

    当尝试解析发送到我的 Android 客户端的日期字符串时 我得到一个无法解析的日期 这是例外 java text ParseException 无法解析的日期 2018 09 18T00 00 00Z 位于 偏移量 19 在 java t
  • 如何仅从 Firestore 获取最新更新的数据?

    在 Firestore 上发现任何更改时始终获取整个文档 如何只获取最近更新的数据 这是我的数据 我需要在第一次加载时在聊天中按对象顺序 例如 2018 09 17 30 40 msg和sendby 并且如果数据更新则仅获取新的msg和se
  • 将人类日期(当地时间 GMT)转​​换为日期

    我正在服务器上工作 服务器正在向我发送 GMT 本地日期的日期 例如Fri Jun 22 09 29 29 NPT 2018在字符串格式上 我将其转换为日期 如下所示 SimpleDateFormat simpleDateFormat ne
  • Jetpack Compose 中复选框中的透明复选标记

    在我的 Compose 应用程序中 我需要创建一个圆形复选框 我已经通过下面的代码实现了这一点 Composable fun CircleCheckBox isChecked Boolean modifier Modifier Modifi
  • 在android中从SD卡上传图像到facebook

    我无法从 SD 卡上传 Facebook 上的图像 我使用了下面的代码 但它没有给我错误 但同时它没有上传图像 byte data null try FileInputStream fis new FileInputStream filep
  • Android TextureView 和硬件加速

    我正在尝试实现上所示的示例这一页 http developer android com reference android view TextureView html 我已经在运行 android 4 及以上版本的三种不同设备上进行了尝试
  • JetPack Compose - 卡中行中的weight() 不起作用

    创建 Android 应用程序时 我将一些可组合项放在卡片的一行中 如下所示 但它没有按我的预期工作 我添加 weight 1f 的可组合项不再显示 data class Test val title String val text Str
  • Activity 暂停时调用 FragmentManager.popBackStack 是否安全

    的文档FragmentManager popBackStack https developer android com reference android app FragmentManager html popBackStack java
  • 如何在android中安装和使用couch db

    我应该如何在 android 中安装和使用 couch Db 我的意思是本地沙发数据库 我可以在平板电脑和模拟器中使用它 为此我必须遵循哪些步骤 我目前正在开发一个使用它的项目 有两种选择 1 couchbase android 是的 co
  • View.post(),以及当Runnables被执行时

    我最初的问题是需要知道我的根的高度和宽度View这样我就可以进行程序化的布局更改 就我的目的而言 我不一定需要在onCreate 对于我来说 以编程方式添加我的孩子就足够了View根布局完成后 因此我很乐意使用onWindowFocusCh

随机推荐

  • 在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