如何将本机库(.so文件)导入Eclipse?

Li_*_*i_W 19 eclipse android

我下载了Android PDF Viewer源代码,并尝试在Eclipse中编译它.我的朋友说我可以从APK中提取预编译的.so文件,而不是搞乱Cygwin并重新编译本机C库.

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

我究竟如何将这些libpdfview2.so文件导入到eclipse项目中?

更新:Eclipse提供以下错误,不会运行:

归档所需的库:项目'APV'中的'lib/armeabi/libpdfview2.so'无法读取或不是有效的ZIP文件

The*_*heo 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/libs子文件夹中.此外,通常它们位于描述其体系结构的更多子文件夹中(例如project_root_dir/libs/armeabi/libpdfview2.so).

  2. 要在活动中使用库,请向活动添加静态库加载器,如下所示:

    static
    {
    System.loadLibrary("pdfview2"); //注意缺少lib前缀
    }

  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);  
Run Code Online (Sandbox Code Playgroud)


Mic*_*chi 5

正如所提到的另一个关于此主题的Stack Overflow线程在Window/Preferences/Android/Build下关闭"在构建时自动刷新资源和资源文件夹"和"当外部jar包含本机库时强制错误".至少它对我的情况有帮助!

并且不要忘记将so-file放在'lib s/armeabi'中以便在运行时使用它.

希望这有助于其他人,如果对Li_W来说太晚了.