在android中使用第三方.so文件的正确方法

时间:2014-10-31 11:31:57

标签: android eclipse java-native-interface

我坚持这个问题,不知道我做错了什么。请帮帮我。

我正在开发一个Android项目,我必须使用2个本机库(.so)文件。这两个文件不是由我生成的,我只需要在我的项目中使用它们。

我已将这些.so文件放在libs-> armeabi文件夹下。在代码中,我使用静态块内的System.loadLibrary(" name")来加载这些库文件。执行此操作后,我清理项目并运行应用程序。我收到以下错误

java.lang.UnsatisfiedLinkError:

我缺少什么。我也取消了构建设置中的前两个选项。

注意:我没有开发本机库。我只是用它。它在以前的版本中使用,所以我很确定.so文件的生成方式没有任何问题。

PS:我的最终要求是这样的, 我的android应用程序将有一个我正在开发的jar。 jar中的方法将使用这些本机函数。主应用程序不会直接访问本机函数。我应该将.so文件放在jar中还是应该放在主应用程序中。我应该如何打包jar和.so文件。

请帮帮我,这是我第一次使用原生功能,我完全迷失了。任何材料的链接都会很棒。

1 个答案:

答案 0 :(得分:1)

  1. 将PATH设置为您的NDK Eclipse - >窗口 - >偏好 - > Android - > NDK - >设置NDK的路径

  2. 右键点击Android项目,然后选择Android工具 - >添加原生支持。

  3. 更改Android.mk文件以包含此.so文件

    LOCAL_PATH:= $(致电my-dir)

    include $(CLEAR_VARS)
    
    LOCAL_MODULE := <module_name>
    
    LOCAL_SRC_FILES := <.so file name>
    
    LOCAL_C_INCLUDES := $(LOCAL_PATH)/../jni/include   
    
    include $(PREBUILT_SHARED_LIBRARY)
    
  4. 清理项目并重新构建