2011-12-27 52 views
19

我下載了Android PDF Viewer源代碼,並試圖在Eclipse中進行編譯。相反,使用Cygwin搞亂和重新編譯本地C庫,我的朋友說我可以從這裏APK提取預編譯的.so文件:如何將本機庫(.so文件)導入Eclipse?

http://code.google.com/p/apv/downloads/detail?name=apv-0.3.1dev13.apk&can=2&q=

究竟如何導入這些libpdfview2.so文件進入eclipse項目?

更新:Eclipse中提供了以下錯誤而無法運行:

存檔所需的庫:「LIB/armeabi/libpdfview2.so」項目「APV」無法讀取或不是有效的ZIP文件

回答

21

看看他們在樣本項目是如何設置的東西了: http://code.google.com/p/apv/source/browse/#hg%2Fpdfview

這個NDK教程也可能是有用的在幫助你而言弄清楚事情是如何與NDK工作: http://mobile.tutsplus.com/tutorials/android/ndk-tutorial/

的基本是這樣的:

  1. 的.so庫文件通常走在project_root_dir /庫子文件夾。另外,它們通常位於描述其體系結構的其他子文件夾中(例如,project_root_dir/libs/armeabi/libpdfview2.so)。

  2. 要使用庫中的活動添加一個靜態庫加載到活動,如下所示:

    靜態
    {
    的System.loadLibrary(「pdfview2」); //注意缺少庫前綴
    }

  3. 然後定義您正在導入的本機函數。您可以通過native關鍵字來識別這些功能。看在文件中下面來看看他們的樣本中導入哪些功能:

http://code.google.com/p/apv/source/browse/pdfview/src/cx/hell/android/pdfview/PDF.java?r=560343d2dad904c5c925b6cadf97b90430fd25f4

下面是一些例子:

private native int parseBytes(byte[] bytes); 
private native int parseFile(String fileName); 
private native int parseFileDescriptor(FileDescriptor fd); 
+0

這就是我想要做的,但我無法從C源代碼編譯該項目。我已經設法從APK中提取已編譯的庫文件,但不知道如何將它們包含到Eclipse中的Android項目中。 – 2011-12-28 00:07:12

+0

您是否按照此處的構建說明進行操作? http://code.google.com/p/apv/source/browse/pdfview/jni/build-instructions。txt – Theo 2011-12-28 00:15:30

+0

是的,它沒有工作。我放棄。這些說明用於構建libpdfview2.so,並且我從APK中提取該文件,因此我不需要幫助構建C源代碼。我需要幫助導入/鏈接到Android應用程序。 – 2011-12-28 00:37:36

5

如前所述another Stack Overflow thread about this topic關閉「自動刷新資源和資產文件夾在構建「和」強制外部罐子包含本地庫時出錯「在窗口/首選項/ Android /生成幫助。至少它對我的情況有幫助!

並且不要忘記把這個文件放在'lib s/armeabi'中,讓它在運行時可用。

希望這對其他人有幫助,如果Li_W太遲了。