2013-02-21 81 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。

你需要重新構建。因此請使用您的應用程序包進行歸檔,之後此錯誤將無效,您也將能夠獲得本地函數訪問權限。