Android JNI APK包装

时间:2012-02-01 18:30:20

标签: android android-ndk java-native-interface

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

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

  • 如何防止删除这些额外的库?
  • 如何确保在APK中包含其他所需的SO?

2 个答案:

答案 0 :(得分:9)

您无需自行将此库复制到libs文件夹。这项工作应该由ndk-build完成。

这两个步骤应该足够了:

  1. 在项目的根级别创建mylibs(您可以使用任何其他名称)文件夹。并将您的库放入此文件夹。

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

    include $(CLEAR_VARS)
    LOCAL_MODULE:=mylib
    LOCAL_SRC_FILES:=../mylibs/libmylib.so
    include $(PREBUILT_SHARED_LIBRARY)
    
  3. LOCAL_SRC_FILES可能需要略有不同的路径。这取决于您的Eclipse配置。)

答案 1 :(得分:1)

在此上下文中添加的另一个注意事项是,外部SharedLib的路径必须相对于jni目录(或任何spcified @ LOCAL_PATH),即“LOCAL_SRC_FILES:= ../../ .. /Android/ffmpeg/libavcodec/libavcodec.so“将在绝对路径不会的地方工作。