我在我的android仪器测试中使用OpenCV。它适用于较新的设备(gnex,nexus 5,nexus 7),但不适用于较旧的设备(nexus one,samsung GT-P7500R)。我正在为这个库使用静态初始化(而不是使用池/共享本机库的管理器应用程序)。
与armeabi和armeabi-v7a一样,基于gradle并包含相同的.so文件的构建代码相同。
我已经安装了OpenCVManager和另一个使用它的应用程序,它甚至在旧设备上也能正常工作。我偷看了apk,甚至复制了相同的.so文件,但仍然收到相同的错误信息:
java.lang.UnsatisfiedLinkError: Couldn't load opencv_java: findLibrary returned null
at java.lang.Runtime.loadLibrary(Runtime.java:429)
at java.lang.System.loadLibrary(System.java:554)
at org.opencv.android.StaticHelper.loadLibrary(StaticHelper.java:54)
at org.opencv.android.StaticHelper.initOpenCVLibs(StaticHelper.java:85)
at org.opencv.android.StaticHelper.initOpenCV(StaticHelper.java:29)
at org.opencv.android.OpenCVLoader.initDebug(OpenCVLoader.java:51)
关于还有什么不同的任何想法?我看了里面的仪器apk(调试测试),lib文件就在那里......
编辑:我尝试了各种设置,但没有一个能够正常工作: - 只是在armeabi文件夹中的armeabi文件 - 只是armeabi-v7a文件夹中的armeabi-v7a文件 - 顶级文件夹中的armeabi文件(apk内的lib文件夹) - 顶级文件夹中的armeabi-v7a文件(apk内的lib文件夹) - 手动加载opencv_java - 手动加载OpenCVENgine,OpenCVEngine_jni(从“OpenCVManager”应用程序中“借用”)。
我在其他设备上尝试了其中一些方法,但它们运行良好......
答案 0 :(得分:0)
事实证明,这是一个问题,因为opencv库是仪器测试项目的依赖项的一部分。
在androidTestCompile
文件中从compile
切换到build.gradle
(基本上,将依赖项添加到测试中的应用程序而不是测试应用程序)会使库加载正常工作。我会再挖掘一下,看看是否有任何解决方法。