Android的JNI APK包装

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

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

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

Solutions Collecting From Web of "Android的JNI APK包装"

您不需要将这些库自己复制到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不会。