Android : Overcome System.loadlibrary(); issue about java.lang.UnsatisfiedLinkerror

前提是你 提交于 2019-12-11 17:51:07

问题


I am working on APV pdf reader. I am facing System.loadLibrary("pdfview2"); error. It's giving java.lang.UnsatisfiedLinkerror.
How to fix this issue? I installed Android-NDK also, but not getting how to load native libraries. Full confusion. Please suggest me a way to fix this issue.

09-26 12:51:44.243: E/AndroidRuntime(2537): FATAL EXCEPTION: main
09-26 12:51:44.243: E/AndroidRuntime(2537): java.lang.ExceptionInInitializerError
09-26 12:51:44.243: E/AndroidRuntime(2537):     at cx.hell.android.pdfview.OpenFileActivity.getPDF(OpenFileActivity.java:541)
09-26 12:51:44.243: E/AndroidRuntime(2537):     at cx.hell.android.pdfview.OpenFileActivity.startPDF(OpenFileActivity.java:502)
09-26 12:51:44.243: E/AndroidRuntime(2537):     at cx.hell.android.pdfview.OpenFileActivity.onCreate(OpenFileActivity.java:219)
09-26 12:51:44.243: E/AndroidRuntime(2537):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
09-26 12:51:44.243: E/AndroidRuntime(2537):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
09-26 12:51:44.243: E/AndroidRuntime(2537):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
09-26 12:51:44.243: E/AndroidRuntime(2537):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
09-26 12:51:44.243: E/AndroidRuntime(2537):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
09-26 12:51:44.243: E/AndroidRuntime(2537):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-26 12:51:44.243: E/AndroidRuntime(2537):     at android.os.Looper.loop(Looper.java:123)
09-26 12:51:44.243: E/AndroidRuntime(2537):     at android.app.ActivityThread.main(ActivityThread.java:3683)
09-26 12:51:44.243: E/AndroidRuntime(2537):     at java.lang.reflect.Method.invokeNative(Native Method)
09-26 12:51:44.243: E/AndroidRuntime(2537):     at java.lang.reflect.Method.invoke(Method.java:507)
09-26 12:51:44.243: E/AndroidRuntime(2537):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
09-26 12:51:44.243: E/AndroidRuntime(2537):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
09-26 12:51:44.243: E/AndroidRuntime(2537):     at dalvik.system.NativeStart.main(Native Method)
09-26 12:51:44.243: E/AndroidRuntime(2537): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load pdfview2: findLibrary returned null
09-26 12:51:44.243: E/AndroidRuntime(2537):     at java.lang.Runtime.loadLibrary(Runtime.java:429)
09-26 12:51:44.243: E/AndroidRuntime(2537):     at java.lang.System.loadLibrary(System.java:554)
09-26 12:51:44.243: E/AndroidRuntime(2537):     at cx.hell.android.lib.pdf.PDF.<clinit>(PDF.java:25)
09-26 12:51:44.243: E/AndroidRuntime(2537):     ... 16 more

Hi i attached the log report .its giving :- Caused by: java.lang.UnsatisfiedLinkError: Couldn't load pdfview2: findLibrary returned null


回答1:


Make sure that you have libpdfview2.so in your libs folder..

http://code.google.com/p/apv/issues/detail?id=42
Android - 'Couldn't load Foo: findLibrary returned null'




回答2:


After building your project, look in the libs/ folder for the resulting .so. If you're building for ARM, is there an armeabi or armeabi-v7a folder with your .so in it? You can set the architectures you want to support in jni/Application.mk with the APP_ABI variable.

APP_ABI := armeabi armeabi-v7a x86 mips

will build your library for all of the possible supported architectures.

Don't forget that Android's dynamic linker is dumb and won't load library dependencies automatically. If you're using C++ code with gnustl_shared, for example, you'll need to load that before any libraries that are linked against it.

static {
    System.loadLibrary("gnustl_shared");
    System.loadLibrary("a_cplusplus_library");
}



回答3:


Another reason for this failure, in my experience, is the presence of libs/armeabi and not libs/armeabi-v7a. Copy the contents of libs/armeabi into a new folder named libs/armeabi-v7a.




回答4:


1- make sure name of native function Java_package_className_methodName

2- APP_ABI := all64 //defined in jni/Application.mk



来源:https://stackoverflow.com/questions/12596317/android-overcome-system-loadlibrary-issue-about-java-lang-unsatisfiedlinke

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!