2013-02-21 106 views
2

我是Android NDK的新手。 这是我的第一个项目。 我从http://code.google.com/p/apv/downloads/list下载了android PDF阅读器。 它编译正确,但是当我试图从这个应用程序加载PDF。它显示下面的错误:APV 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的新手,所以我不明白该怎么做。

+0

是否有任何机会让您忘记了其他必需的依赖关系?因为你的错误是由'引起:java.lang.UnsatisfiedLinkError:Library pdfview2未找到引起' – KyelJmD 2013-02-25 15:18:07

回答

4

貌似这引起了错误 Caused by: java.lang.UnsatisfiedLinkError: Library pdfview2 not found

只要下载这个库,pdfview2

打开使用任何zip工具的文件,并在你的项目中复制必要的文件,你是好去。

1

有对PDF打开另一种解决方案,在这里采取偷看:

Open PDF in Android

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

+0

hii我的问题是我不应该使用其他应用程序来启动pdf.so它对我没有帮助 – user446010 2013-02-26 10:27:36

2

当您不加载本机库时出现此错误。这会发生很多原因。首先,您需要确保您的Android.mk文件(在您的jni目录中)设置正确。假设它(或它们)设置正确,找到类似这样的线:

LOCAL_MODULE := libpdfview2 

请注意这个名字,因为它很重要。接下来,将下列行添加到您的活动的顶部(或应用程序在多活动应用程序):

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

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


编辑

而且,你读过关于建立图书馆,here的信息?

1
Caused by: java.lang.UnsatisfiedLinkError: Library pdfview2 not found 

上述异常由于链路造成未找到指定的库这是自我解释,但实际上原因是当相关项目的.so文件已经从该项目中的.so功能是创建根据项目的包装结构创建。所以我们不能在我们的项目中直接使用.so。

你需要重新构建。因此请使用您的应用程序包进行归档,之后此错误将无效,您也将能够获得本地函数访问权限。