我在我的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應用程序)。
我已經嘗試了一些其他設備上的這些方法和他們很好地工作......
一般靜態 \t { \t \t OpenCVLoader.initDebug(); \t}是從這個意義上說,在你的應用程序的根本上的解決方案。但似乎並不像你說的那樣加載它。可能有一些靜態庫在你的armeabi文件夾中缺失? –
有趣的是,在nexus之一,opencv管理器只帶有一個armeabi-v7a文件夾,我試圖捆綁這些文件夾,但沒有運氣。 – radu
沒有armeabi文件夾,您將無法在舊設備上使用opencv庫。我在辦公室裏有幾個舊的,並且不能用armeabi-v7文件夾工作。我在下載的OpenCV Android Library項目中有一個armeabi文件夾結構。如果除了現有的文件夾之外,還在/ libs文件夾下的應用程序中提供了該文件夾,則很可能會返回到舊系統上的鏈接。 –