gpt4 book ai didi

android - 将第二个 JNI 库添加到我的 Android 项目 (OpenCV) 后出错

转载 作者:行者123 更新时间:2023-11-30 00:13:38 28 4
gpt4 key购买 nike

我正在尝试将 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)

我试图手动注释掉所有对 OpenCV 的引用,但除非我从我的 libs 文件夹中删除所有 OpenCV 文件,否则现有库 (com.qihancloud.opensdk) 无法找到它自己的库函数。我的库的文件夹结构是这样的: project folder structure

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

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

还有我的 CMakeLists.txt https://pastebin.com/gGwgWtxP

最佳答案

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

你的情况与described here完全一样. QihanOpenSDK_1.1.8.0.aar只有armeabi版本的libuvcNative.so。解决方法是更改​​ build.gradle 的第 15 行阅读

 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在 native 构建中使用导入的 aar 中的 so 文件。

我相信您的工作 版本不仅丢弃了所有 OpenCV 库,而且也没有构建 libnative-lib.so。这样,cmake 永远不会寻找 libuvcNative.so,但这个原生库仍然与 APK 一起部署,因为 aar 是一个 compiled 您的应用程序的依赖项。我猜某些 QihanOpenSDK 类显式调用

System.loadLibrary("uvcNative")

如果你的 libnative-lib.so 不使用来自 libuvcNative.so 的外部符号,你不需要我上面提到的技巧,也不需要在你的 CMakeLists.txt 中提及 QihanOpenSDK

关于android - 将第二个 JNI 库添加到我的 Android 项目 (OpenCV) 后出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47710378/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com