Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android JNI APK打包_Android_Android Ndk_Java Native Interface - Fatal编程技术网

Android JNI APK打包

Android JNI APK打包,android,android-ndk,java-native-interface,Android,Android Ndk,Java Native Interface,我已经实现了一个JNI android应用程序。此应用程序需要将一些额外的“共享库”打包为APK的一部分。我使用Ecplise将这些lib添加到项目的“/libs/armeabi”文件夹中 但是,在启动应用程序时(通过集成调试器),我添加的“共享库”将从“armeabi”文件夹中删除 如何防止删除这些附加LIB 如何确保APK中包含额外的所需SOs 您不需要自己将此库复制到libs文件夹中。这项工作应该由ndk build完成 这两个步骤应该足够了: 在项目的根级别上创建mylibs(可以使用

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

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

  • 如何防止删除这些附加LIB
  • 如何确保APK中包含额外的所需SOs

您不需要自己将此库复制到
libs
文件夹中。这项工作应该由
ndk build
完成

这两个步骤应该足够了:

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

  • 对于每个库,在用库名替换
    mylib
    语句的
    include$(CLEAR\u VARS)
    之前添加以下行:

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

  • (对于
    本地\u SRC\u文件,您可能需要稍微不同的路径。这取决于您的Eclipse配置。)

    在此上下文中要添加的另一个注意事项是,外部SharedLib的路径必须与jni目录(或任何指定的@LOCAL\u路径)相关,即,“本地_SRC_文件:=../../../Android/ffmpeg/libavcodec/libavcodec.so“将在绝对路径不起作用的地方工作。

    完成上述操作后,我在构建过程中得到了以下结果:ndroid NDK:jni/Android.mk:swscale:LOCAL_MODULE_文件名不应包括文件扩展名安卓NDK:ERROR:jni/Android.mk:swscale:LOCAL_SRC_文件应指向以“.a”结尾的文件。应该有
    prebuild\u SHARED\u LIBRARY
    ,而不是
    prebuild\u STATIC\u LIBRARY