【问题标题】:Android : Overcome System.loadlibrary(); issue about java.lang.UnsatisfiedLinkerrorAndroid : 克服 System.loadlibrary();关于 java.lang.UnsatisfiedLinkerror 的问题
【发布时间】:2012-09-26 07:05:58
【问题描述】:

我正在开发 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

【问题讨论】:

标签: android pdf android-ndk apvpdf


【解决方案1】:

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

APP_ABI := armeabi armeabi-v7a x86 mips

将为所有可能支持的架构构建您的库。

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

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

【讨论】:

  • 感谢您的支持回答...这里我使用的是 APV PDF 阅读器。我也没有得到适当的文档,而且我第一次使用 ndk。有任何详细的程序,如何构建项目。?你能帮我解决这个问题吗...
  • +1 我希望我能给你一个 +10,因为我已经浪费了一整天的时间来解决这个问题,而且解决方案非常简单:在 jni/Application.mk 添加行 @987654323 @。它只是生成 armeabi/liblibname.so,现在它为每个架构创建一个文件夹。
【解决方案2】:

【讨论】:

  • 链接很有帮助,但没有获得为 APV 阅读器构建 ndk 的确切过程。
【解决方案3】:

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

【讨论】:

    【解决方案4】:

    1- 确定本地函数 Java_package_className_methodName 的名称

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多