2014-11-24 134 views
1

因此,我使用新的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。有沒有人有關於最新進展的信息?

+0

可以打開 /生成/輸出/ APK文件夾並打開APK(帶任何壓縮工具)來查看apk是否包含預期的本地庫。 (特別是libopencv_core.so) – ben75 2014-11-24 10:49:46

+0

出於好奇 - 爲什麼很多人仍然繼續使用JavaCV,它可能會過時。 OpenCV.org現在提供了Android包裝器和桌面Java包裝器,它們將始終保持同步(自動生成)。 JavaCV的優勢還是僅僅是慣性? http://stackoverflow.com/a/27356635/1180117 – Kiran 2014-12-26 02:13:22

回答

0

嘗試在依賴增加這五碼:

compile 'org.bytedeco:javacv:+' 
compile 'org.bytedeco.javacpp-presets:opencv:3.0.0-1.1:android-x86' 
compile 'org.bytedeco.javacpp-presets:ffmpeg:2.8.1-1.1:android-x86' 
compile 'org.bytedeco.javacpp-presets:opencv:3.0.0-1.1:android-arm' 
compile 'org.bytedeco.javacpp-presets:ffmpeg:2.8.1-1.1:android-arm' 

這裏使用的是bytedeco代替googlecode上現在