因此,我使用新的Android Studio,并试图在最基本的设置中安装JavaCV。我做了一个没有任何内容的全新项目,导入(我认为没有成功)JavaCV库,然后运行JavaCV仓库中给出的样本之一,我收到以下错误消息。使用javaCv和FFMPEG的Android Studio
Process: com.example.calvintmoss.dejavid, PID: 1187
java.lang.UnsatisfiedLinkError: Couldn't load jniopencv_core from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.calvintmoss.dejavid-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.calvintmoss.dejavid-1, /system/lib]]]: findLibrary returned null
at java.lang.Runtime.loadLibrary(Runtime.java:358)
at java.lang.System.loadLibrary(System.java:526)
at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:535)
at org.bytedeco.javacpp.Loader.load(Loader.java:410)
at org.bytedeco.javacpp.Loader.load(Loader.java:353)
at org.bytedeco.javacpp.opencv_core.<clinit>(opencv_core.java:10)
at org.bytedeco.javacpp.helper.opencv_core$AbstractIplImage.create(opencv_core.java:909)
at com.example.calvintmoss.dejavid.MainActivity.initRecorder(MainActivity.java:249)
at com.example.calvintmoss.dejavid.MainActivity.onCreate(MainActivity.java:151)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.UnsatisfiedLinkError: Couldn't load opencv_core from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.calvintmoss.dejavid-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.calvintmoss.dejavid-1, /system/lib]]]: findLibrary returned null
at java.lang.Runtime.loadLibrary(Runtime.java:358)
at java.lang.System.loadLibrary(System.java:526)
at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:535)
at org.bytedeco.javacpp.Loader.load(Loader.java:401)
at org.bytedeco.javacpp.Loader.load(Loader.java:353)
at org.bytedeco.javacpp.opencv_core.<clinit>(opencv_core.java:10)
at org.bytedeco.javacpp.helper.opencv_core$AbstractIplImage.create(opencv_core.java:909)
at com.example.calvintmoss.dejavid.MainActivity.initRecorder(MainActivity.java:249)
at com.example.calvintmoss.dejavid.MainActivity.onCreate(MainActivity.java:151)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
我已阅读了关于该问题的其他几个顶端帖子,但我无法弄清楚什么是错的。我通过gradle下载了JavaCV,然后添加了lib和lib/areabi文件夹。我将ffmpeg.jar,javacpp.jar,javacv.jar和opencv.jar全部导入到lib文件夹中。我从opencv-android-arm.jar和ffmpeg-android-arm.jar中提取了所有.SO文件,并将它们放在lib/armeabi中,就像git repo上的说明一样。我无法弄清楚发生了什么事。有人有主意吗?另外我目前的设置是。 Project-> AppModule,然后在里面我有我的lib和lib的里面我有armeabi。有没有人有关于最新进展的信息?
可以打开 /生成/输出/ APK文件夹并打开APK(带任何压缩工具)来查看apk是否包含预期的本地库。 (特别是libopencv_core.so) –
ben75
2014-11-24 10:49:46
出于好奇 - 为什么很多人仍然继续使用JavaCV,它可能会过时。 OpenCV.org现在提供了Android包装器和桌面Java包装器,它们将始终保持同步(自动生成)。 JavaCV的优势还是仅仅是惯性? http://stackoverflow.com/a/27356635/1180117 – Kiran 2014-12-26 02:13:22