0

我正在研究 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

4 回答 4

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");
}
于 2012-09-26T18:03:44.090 回答
0

确保您的 libs 文件夹中有 libpdfview2.so。

http://code.google.com/p/apv/issues/detail?id=42
Android - '无法加载 Foo:findLibrary 返回 null'

于 2012-09-26T07:35:59.807 回答
0

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

于 2015-12-04T16:03:50.737 回答
0

1-确保本机函数 Java_package_className_methodName 的名称

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

于 2016-10-18T14:52:02.420 回答