Android本机.so UnsatisfiedLinkError 预构建.so共享对象或静态对象根据使用的模块限制OpenCV

问题描述

我在生产中的某些设备上遇到UnsatisfiedLinkError异常,但是大多数设备都可以正常工作。我找到了一些解决方案,但是没有用。知道为什么会发生,怎么解决?

致命异常:java.lang.UnsatisfiedLinkError dlopen失败:无法找到“ /data/app/com.journiapp.book-_6OVLgeNMFYJvD1g5d6SAw==/split_config.armeabi_v7a.apk!/lib/armeabi-v7a/libopencv_core.so”引用的符号“ fgets_unlocked” ...

targetSdkVersion = 29
minSdkVersion = 21
buildToolsVersion = '29.0.2'


ENV CMAKE_VERSION "3.10.2.4988404"
ENV NDK_VERSION "21.0.6113669"

这就是我建立.so库的方式;

预构建.so共享对象(或静态对象)根据使用的模块限制OpenCV

$cmake -DANDROID_NATIVE_API_LEVEL=24 \
    -DANDROID_STL=c++_shared \
    -DBUILD_SHARED_LIBS=ON \
    -DOpenCV_STATIC=OFF \
    -DANDROID_ABI=arm64-v8a \
    -DBUILD_LIST=core,features2d,imgproc \
    -DANDROID_NDK=$ANDROID_NDK \
    -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \
    -DCMAKE_INSTALL_PREFIX:PATH=./opencv/android_build/out \
    -DBUILD_ANDROID_EXAMPLES=OFF \
    -DBUILD_ANDROID_PROJECTS=OFF \
    -DBUILD_opencv_ittnotify=OFF \
    -DBUILD_ITT=OFF \
    -DCV_DISABLE_OPTIMIZATION=OFF \
    -DWITH_CUDA=OFF \
    -DWITH_OPENCL=OFF \
    -DWITH_OPENCLAMDFFT=OFF \
    -DWITH_OPENCLAMDBLAS=OFF \
    -DWITH_VA_INTEL=OFF \
    -DCPU_BASELINE_DISABLE=ON \
    -DENABLE_SSE=OFF \
    -DENABLE_SSE2=OFF \
    -DBUILD_TESTING=OFF \
    -DBUILD_PERF_TESTS=OFF \
    -DBUILD_TESTS=OFF \
    -DCMAKE_BUILD_TYPE=RELEASE \
    -DBUILD_EXAMPLES=OFF \
    -DBUILD_DOCS=OFF \
    -DBUILD_opencv_apps=OFF \
    -DOpenCV_STATIC=OFF \
    -DWITH_1394=OFF \
    -DWITH_ARITH_DEC=OFF \
    -DWITH_ARITH_ENC=OFF \
    -DWITH_CUBLAS=OFF \
    -DWITH_CUFFT=OFF \
    -DWITH_FFMPEG=OFF \
    -DWITH_GDAL=OFF \
    -DWITH_GSTREAMER=OFF \
    -DWITH_GTK=OFF \
    -DWITH_HALIDE=OFF \
    -DWITH_JASPER=OFF \
    -DWITH_NVCUVID=OFF \
    -DWITH_OPENEXR=OFF \
    -DWITH_PROTOBUF=OFF \
    -DWITH_PTHREADS_PF=OFF \
    -DWITH_QUIRC=OFF \
    -DWITH_V4L=OFF \
    -DWITH_WEBP=OFF \
    -DBUILD_JAVA=OFF \
    -DWITH_ADE=OFF \
    -DWITH_JPEG=OFF \
    -DWITH_TIFF=OFF \
    -DBUILD_ZLIB=OFF \
    -DWITH_PNG=OFF \
    -DBUILD_IPP_IW=OFF \
    -DWITH_IPP=OFF \
    -DWITH_MATLAB=OFF \
    -DWITH_1394=OFF \
    -DWITH_ADE=OFF \
    -DWITH_VA_INTEL=OFF \
    -DWITH_GDAL=OFF \
    -DWITH_GSTREAMER=OFF \
    -DWITH_JASPER=OFF \
    -DWITH_OPENCL=OFF \
    -DWITH_OPENCLAMDBLAS=OFF \
    -DWITH_OPENCLAMDFFT=OFF \
    -DWITH_OPENEXR=OFF \
    -DWITH_PROTOBUF=OFF \
    -DWITH_QUIRC=OFF \
    ..

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...