想用android studio 通過JNI調用opencv庫,但是一直報錯could not load library libopencv_java3.so,編譯都沒有問題,但是一運行就報,簡直氣死。
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: soinfo_link_image(linker.cpp:1635): could not load library "libopencv_java3.so" needed by "libnative-lib.so"; caused by load_library(linker.cpp:745): library "libopencv_java3.so" not found
at java.lang.Runtime.loadLibrary(Runtime.java:371)
at java.lang.System.loadLibrary(System.java:535)
at com.hello.MainActivity.<clinit>(MainActivity.java:15)
先說下我的設備調試版本:
android studio:3.2
運行設備:android4.2.2
opencvSDK:3.4.3
在網上找資料找了很多天,用了很多方法,一直以爲是網上說的調用opencv庫的apk需要先安裝SDK/OpenCV-android-sdk/apk/OpenCV_xxx_Manager.apk,後來發現不對,如果真是這個問題,最起碼要提示mananger.apk安裝問題呀。
後來發現同樣的 代碼在我的小米8(andorid8.1)運行竟然正常,說明我代碼沒有問題啊。
後面不知道從哪看了一個庫的先後問題,於是抱着試一試的態度將opencv_java3.so 放在了native-lib.so前面,竟然好了!
一萬個曹尼瑪 飛過。。。
MainActivity.java
static {
System.loadLibrary("opencv_java3");
System.loadLibrary("native-lib");
}
總結,有時候不是網上的資料不對,而是你的平臺太Low。換個平臺試一試,可能真的會柳暗花明。。。