2

我是 Android NDK 的新手。这是我的第一个项目。我从http://code.google.com/p/apv/downloads/list下载了安卓 PDF 阅读器。它正在正确编译,但是当我尝试从这个应用程序加载 PDF 时。它显示以下错误:

07-03 10:18:06.171: ERROR/AndroidRuntime(375): FATAL EXCEPTION: main
07-03 10:18:06.171: ERROR/AndroidRuntime(375): java.lang.ExceptionInInitializerError
07-03 10:18:06.171: ERROR/AndroidRuntime(375):     at cx.hell.android.pdfview.OpenFileActivity.getPDF(OpenFileActivity.java:541)
07-03 10:18:06.171: ERROR/AndroidRuntime(375):     at cx.hell.android.pdfview.OpenFileActivity.startPDF(OpenFileActivity.java:502)
07-03 10:18:06.171: ERROR/AndroidRuntime(375):     at cx.hell.android.pdfview.OpenFileActivity.onCreate(OpenFileActivity.java:219)
07-03 10:18:06.171: ERROR/AndroidRuntime(375):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
07-03 10:18:06.171: ERROR/AndroidRuntime(375):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
07-03 10:18:06.171: ERROR/AndroidRuntime(375):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
07-03 10:18:06.171: ERROR/AndroidRuntime(375):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
07-03 10:18:06.171: ERROR/AndroidRuntime(375):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
07-03 10:18:06.171: ERROR/AndroidRuntime(375):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-03 10:18:06.171: ERROR/AndroidRuntime(375):     at android.os.Looper.loop(Looper.java:123)
07-03 10:18:06.171: ERROR/AndroidRuntime(375):     at android.app.ActivityThread.main(ActivityThread.java:4627)
07-03 10:18:06.171: ERROR/AndroidRuntime(375):     at java.lang.reflect.Method.invokeNative(Native Method)
07-03 10:18:06.171: ERROR/AndroidRuntime(375):     at java.lang.reflect.Method.invoke(Method.java:521)
07-03 10:18:06.171: ERROR/AndroidRuntime(375):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
07-03 10:18:06.171: ERROR/AndroidRuntime(375):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
07-03 10:18:06.171: ERROR/AndroidRuntime(375):     at dalvik.system.NativeStart.main(Native Method)
07-03 10:18:06.171: ERROR/AndroidRuntime(375): Caused by: java.lang.UnsatisfiedLinkError: Library pdfview2 not found
07-03 10:18:06.171: ERROR/AndroidRuntime(375):     at java.lang.Runtime.loadLibrary(Runtime.java:461)
07-03 10:18:06.171: ERROR/AndroidRuntime(375):     at java.lang.System.loadLibrary(System.java:557)
07-03 10:18:06.171: ERROR/AndroidRuntime(375):     at cx.hell.android.lib.pdf.PDF.<clinit>(PDF.java:25)
07-03 10:18:06.171: ERROR/AndroidRuntime(375):     ... 16 more

我在很多问题中都看到了类似的错误。由于我是 NDK 的新手,我不明白该怎么做。

4

4 回答 4

4

看起来这导致了错误 Caused by: java.lang.UnsatisfiedLinkError: Library pdfview2 not found

只需下载这个库,pdfview2

使用任何 zip 工具打开文件并在项目中复制必要的文件,您就可以开始了。

于 2013-02-25T15:20:21.363 回答
2

当您不加载本机库时,您会收到此错误。发生这种情况的原因有很多。首先,您需要确保您的Android.mk文件(在您的jni目录中)设置正确。假设它(或它们)设置正确,找到如下所示的行:

LOCAL_MODULE := libpdfview2

请注意它的名称,因为它很重要。接下来,将以下行添加到您的 Activity(或多 Activity 应用程序中的应用程序)的顶部:

static {
    System.loadLibrary("pdfview2");
}

在这里,请注意名称。它是删除了 lib 前缀的本地模块的名称。假设 NDK 构建工作正常,并且 Android.mk 文件设置正确,这将解决您的问题。


编辑

另外,你在这里读过关于建立图书馆的信息

于 2013-02-28T22:05:42.937 回答
1
Caused by: java.lang.UnsatisfiedLinkError: Library pdfview2 not found

上述异常是由于未找到指定库的链接而导致的,这是不言自明的,但实际上是因为从项目中创建了相关项目的 .so 文件时,.so 函数是根据项目的包结构创建的项目。所以我们不能在我们的项目中直接使用那个 .so 。

您需要使用您的应用程序包重新构建 .so 文件,之后此错误将无效,您也将能够获得本机功能访问权限。

于 2013-03-04T10:50:49.553 回答
1

PDF 打开还有另一种解决方案,请看这里:

在 Android 中打开 PDF

我认为如果没有您的代码,将很难想象会发生什么。

于 2013-02-25T15:20:33.343 回答