【问题标题】:How do I import a native library (.so file) into Eclipse?如何将本机库(.so 文件)导入 Eclipse?
【发布时间】:2011-12-27 23:50:42
【问题描述】:

我下载了 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 文件

【问题讨论】:

    标签: android eclipse


    【解决方案1】:

    看看他们如何在示例项目中进行设置: 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. 要在 Activity 中使用库,您需要向 Activity 添加静态库加载器,如下所示:

      静态
      {
      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);  
    

    【讨论】:

    • 这就是我想要做的,但我无法从 C 源代码编译该项目。我已经设法从 APK 中提取编译好的库文件,但不知道如何将它们包含到 Eclipse 中的 Android 项目中。
    • 您是否按照此处的构建说明进行操作? code.google.com/p/apv/source/browse/pdfview/jni/…
    • 是的,它没有用。我放弃。这些说明用于构建 libpdfview2.so,我从 APK 中提取了该文件,因此我不需要帮助构建 C 源代码。我需要帮助将其导入/链接到 Android 应用程序。
    • 谢谢!其中大部分已经完成;我已经用我仍然得到的 Eclipse 中的特定错误更新了这个问题。我用谷歌搜索无济于事。
    • 现在工作。我需要使用 /libs 而不是 /lib,正如答案所规定的那样。谢谢!
    【解决方案2】:

    正如another Stack Overflow thread about this topic 提到的,在 Window/Preferences/Android/Build 下关闭“在构建时自动刷新资源和资产文件夹”和“当外部 jar 包含本机库时强制出错”会有所帮助。至少对我有帮助!

    并且不要忘记将 so-file 放入 'lib s/armeabi' 以使其在运行时可用。

    希望这对其他人有所帮助,如果 Li_W 为时已晚。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-20
      • 2018-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-29
      • 2013-02-17
      • 1970-01-01
      相关资源
      最近更新 更多