2015-05-13 72 views
1

我的android應用程序使用JNI調用C++庫。 C++ lib已成功構建,但在虛擬設備中運行時,應用程序崩潰時出現以下錯誤:java.lang.UnsatisfiedLinkError: dlopen failed: "libwpa_client.so". File not found.Android的JNI未能加載依賴庫

這裏會發生什麼?我的開發環境是Windows 64位& eclipse Luna。

UPDATE

這是崩潰日誌時Genymotion下的應用程序運行:


05-13 03:37:19.417: E/art(2280): dlopen("/data/app/com.sample.operator/lib/x86/libAndroidJNI.so", RTLD_LAZY) failed: dlopen failed: cannot locate symbol "_ZN7android16ScreenshotClient6updateERKNS_2spINS_7IBinderEEE" referenced by "libAndroidJNI.so"... 
05-13 03:37:19.418: D/AndroidRuntime(2280): Shutting down VM 
05-13 03:37:19.418: E/AndroidRuntime(2280): FATAL EXCEPTION: main 
05-13 03:37:19.418: E/AndroidRuntime(2280): Process: com.example.operator, PID: 2280 
05-13 03:37:19.418: E/AndroidRuntime(2280): java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "_ZN7android16ScreenshotClient6updateERKNS_2spINS_7IBinderEEE" referenced by "libAndroidJNI.so"... 
05-13 03:37:19.418: E/AndroidRuntime(2280):  at java.lang.Runtime.loadLibrary(Runtime.java:371) 
05-13 03:37:19.418: E/AndroidRuntime(2280):  at java.lang.System.loadLibrary(System.java:988) 
05-13 03:37:19.418: E/AndroidRuntime(2280):  at ... 
05-13 03:37:19.418: E/AndroidRuntime(2280):  at java.lang.reflect.Constructor.newInstance(Native Method) 
05-13 03:37:19.418: E/AndroidRuntime(2280):  at java.lang.Class.newInstance(Class.java:1606) 
05-13 03:37:19.418: E/AndroidRuntime(2280):  at android.app.ActivityThread.handleCreateService(ActivityThread.java:2743) 
05-13 03:37:19.418: E/AndroidRuntime(2280):  at android.app.ActivityThread.access$1800(ActivityThread.java:151) 
05-13 03:37:19.418: E/AndroidRuntime(2280):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1386) 
05-13 03:37:19.418: E/AndroidRuntime(2280):  at android.os.Handler.dispatchMessage(Handler.java:102) 
05-13 03:37:19.418: E/AndroidRuntime(2280):  at android.os.Looper.loop(Looper.java:135) 
05-13 03:37:19.418: E/AndroidRuntime(2280):  at android.app.ActivityThread.main(ActivityThread.java:5254) 
05-13 03:37:19.418: E/AndroidRuntime(2280):  at java.lang.reflect.Method.invoke(Native Method) 
05-13 03:37:19.418: E/AndroidRuntime(2280):  at java.lang.reflect.Method.invoke(Method.java:372) 
05-13 03:37:19.418: E/AndroidRuntime(2280):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
05-13 03:37:19.418: E/AndroidRuntime(2280):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
+0

您是否在項目中和正確的文件夾中包含了庫的正確版本(ARM,ARMv7,x86)? – Robert

+0

是的,我構建了x86&armeabi包,並將它們放到正確的文件夾中。 – Kobayashi

+0

您可以使用[inotifytools for Android](https://github.com/mkttanabe/inotifywait-for-Android)查看您的應用嘗試加載的文件。 – Robert

回答

0

你有沒有裝在你的應用程序庫中使用的System.loadLibrary(yourlobraryname)和還要檢查它應該在您的應用程序庫文件夾中可用。

+0

是的,但由於libwpa_client.so無法加載,所以lib無法加載。 – Kobayashi

+0

你有編譯你的庫使用android JNI工具 – Anshuman

+0

是的,該lib已經建立使用android jni工具。 – Kobayashi