我想在我的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,它关闭了这些库的剥离。