Android:克服System.loadlibrary();关于java.lang.UnsatisfiedLinkerror的问题

时间:2012-09-26 07:05:59

标签: android pdf android-ndk apvpdf

我正在研究APV pdf阅读器。我面临System.loadLibrary("pdfview2");错误。它正在给java.lang.UnsatisfiedLinkerror 如何解决这个问题?我也安装了Android-NDK,但没有得到如何加载本机库。完全混乱。请建议我解决此问题的方法。

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

嗨我附上了日志报告。给出: - 引起:java.lang.UnsatisfiedLinkError:无法加载pdfview2:findLibrary返回null

4 个答案:

答案 0 :(得分:3)

构建项目后,在libs /文件夹中查找生成的.so。如果您正在为ARM构建,是否有一个带有.so的armeabi或armeabi-v7a文件夹?您可以使用 APP_ABI 变量在jni / Application.mk中设置要支持的体系结构。

APP_ABI := armeabi armeabi-v7a x86 mips

将为所有可能支持的体系结构构建您的库。

不要忘记Android的动态链接器是哑的,不会自动加载库依赖项。例如,如果您正在使用带有gnustl_shared的C ++代码,则需要在链接到它的任何库之前加载它。

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

答案 1 :(得分:0)

答案 2 :(得分:0)

根据我的经验,这种失败的另一个原因是存在libs / armeabi而不是libs / armeabi-v7a。将libs / armeabi的内容复制到名为libs / armeabi-v7a的新文件夹中。

答案 3 :(得分:0)

1-确保本机函数Java_package_className_methodName

的名称

2- APP_ABI:= all64 //在jni / Application.mk中定义