Android的JNI APK包装

我已经实现了一个JNI android应用程序。 此应用程序需要一些额外的“共享库”作为APK的一部分进行打包。 使用Ecplise,我已经将这些库添加到项目的“/ libs / armeabi”文件夹中。

但是,启动应用程序(通过集成debugging器)时,我添加的“共享库”从“armeabi”文件夹中删除。

  • 我怎样才能防止这些额外的库被删除?
  • 我怎样才能确保所需的SO附加在APK中?

  • 在Android中使用C ++构buildNDK的问题
  • 如何在android中使用c / cpp库/函数
  • 我们可以访问我的android手机的麦克风驱动程序
  • ptrace在Android上返回-1
  • 在包含下划线的Android包名称中调用JNI函数
  • android mupdf libmupdf.so运行时错误“找不到原生openFile的实现”
  • JNI错误:本地引用表溢出512个条目
  • Android:需要在c ++ NDK中创build共享首选项对象,并存储一些布尔值
  • 您不需要将这些库自己复制到libs文件夹。 这个工作应该由ndk-build

    这两个步骤应该足够了:

    1. 在您的项目的根级别创buildmylibs (您可以使用任何其他名称)文件夹。 把你的库放到这个文件夹中。

    2. 对于每个库,在include $(CLEAR_VARS)语句将mylibreplace为库名之前添加以下行:

       include $(CLEAR_VARS) LOCAL_MODULE:=mylib LOCAL_SRC_FILES:=../mylibs/libmylib.so include $(PREBUILT_SHARED_LIBRARY) 

    (对于LOCAL_SRC_FILES您可能需要稍微不同的path,这取决于您的Eclipseconfiguration。)

    在这个上下文中还需要注意的一点是,外部SharedLib的path必须是相对于jni目录(或任何特定的@ LOCAL_PATH),即“LOCAL_SRC_FILES:= ../../../Android/ “ffmpeg / libavcodec / libavcodec.so”将工作在绝对path不会。