运行构建脚本时,共享库被截断



我想在我的android项目中使用libjpeg.so。

我已经预编译了共享库。

在我的项目中构建脚本:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libjpeg
LOCAL_SRC_FILES :=../lib1/libjpeg.so
include $(PREBUILT_SHARED_LIBRARY)

但是我得到了什么。

源文件lib1/libjpeg.so-1 290 798字节

但是在构建之后归档libs/armeabi/libjpeg.so-247 236字节

我已经分析了这两个文件-第二个只是被截断的

当然,我有"java.lang.UnsisfiedLinkError"

为什么文件被截断?

问题是NDK构建系统在将所有预构建的共享库复制到目标文件夹时会剥离它们。

如果你真的需要使用libjpeg作为共享库,那么我建议你运行一个构建后脚本,将原始文件复制到目标文件夹,覆盖剥离的文件。

最好的解决方案是预构建一个libjpeg.astatic库,然后可以避免像这样剥离:

include $(CLEAR_VARS)
LOCAL_MODULE := libjpeg
LOCAL_SRC_FILES :=../lib1/libjpeg.a
include $(PREBUILT_STATIC_LIBRARY)
...
include $(CLEAR_VARS)    
LOCAL_MODULE    := mylib
LOCAL_SRC_FILES := mylib.cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../lib1/include/
LOCAL_WHOLE_STATIC_LIBRARIES := libjpeg
...
include $(BUILD_SHARED_LIBRARY)

请注意LOCAL_WOLE_STATIC_LIBRARIES,它关闭了这些库的剥离。

相关内容

  • 没有找到相关文章

最新更新