我想在我的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字节
我已经分析了这2个文件 - 第二个文件被截断了
当然我有“java.lang.UnsatisfiedLinkError”
为什么文件被截断?
答案 0 :(得分:1)
问题是NDK构建系统在将所有预建共享库复制到目标文件夹时会将其删除。
如果你真的需要使用libjpeg作为共享库,那么我建议你运行一个后期构建脚本,将原始文件复制到目标文件夹,覆盖被删除的文件。
最好的解决方案是预构建一个libjpeg.a静态库,然后你可以避免像这样剥离:
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_WHOLE_STATIC_LIBRARIES关闭了这些lib的剥离。