2011-12-27 80 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太迟了。

相关问题