机器人:克服的System.loadLibrary(); 关于java.lang.Unsatis

2019-11-01 03:10发布

我工作的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

Answer 1:

请确保你在你的libs文件夹有libpdfview2.so ..

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



Answer 2:

构建项目后,看在库/文件夹中生成的.so。 如果您正在为ARM,是否有armeabi或armeabi-V7A夹在它的。所以? 您可以设定您想要在JNI / Application.mk支持与APP_ABI变量的架构。

APP_ABI := armeabi armeabi-v7a x86 mips

将建立自己的图书馆为所有可能的支持架构。

不要忘了,Android的动态连接器是哑巴,不会自动加载函数库的依赖。 如果您使用C ++代码gnustl_shared,例如,你需要加载之前都反对任何链接库。

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


Answer 3:

另一个原因失败,在我的经验,是库/ armeabi而不是库/ armeabi-V7A的存在。 库/ armeabi的内容复制到一个新的文件夹命名库/ armeabi-V7A。



Answer 4:

1-使本地函数Java_package_className_methodName的肯定名字

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



文章来源: Android : Overcome System.loadlibrary(); issue about java.lang.UnsatisfiedLinkerror