UnsatisfiedLinkError En Android 4.4, libDevil no puede localizar el símbolo "png_set_longjmp_fn"
Yo tengo unconvertidor de imágenes La aplicación para Google Play que funciona bien, incorpora NDK para el soporte de más formatos de archivo utilizando la biblioteca de procesamiento de imágenes DevIL.
Funciona bien en la mayoría de los dispositivos, pero desde que salió Android 4.4 Kitkat, recibí correos electrónicos e informes de fallos en Google Play Console, especialmente de dispositivos Nexus que tienen 4.4 y ahora otros dispositivos más antiguos que reciben la actualización
Aquí está el informe del accidente
java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "png_set_longjmp_fn" referenced by "libdevil.so"...
at java.lang.Runtime.loadLibrary(Runtime.java:364)
at java.lang.System.loadLibrary(System.java:526)
at com.paul.icon.MainActivity.<clinit>(Unknown Source)
at java.lang.Class.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1208)
at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2112)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
La aplicación no puede iniciarse y desde mi propia depuración es desde las primeras líneas de mi MainActivity.java al cargar libdevil
static {
System.loadLibrary("physfs");
System.loadLibrary("jpeg");
System.loadLibrary("tiff");
System.loadLibrary("mng");
System.loadLibrary("png");
System.loadLibrary("jasper");
System.loadLibrary("lcms");
System.loadLibrary("devil");
System.loadLibrary("mylib");
}
diciendo....
java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "png_set_longjmp_fn" referenced by "libdevil.so"...
Aquí está mi archivo android.mk
LOCAL_PATH := $(call my-dir)
PHYSFS_SRC_PATH := physfs-2.0.2/
TIFF_SRC_PATH := tiff-3.9.5/
MNG_SRC_PATH := libmng-1.0.10/
LCMS_SRC_PATH := lcms2-2.2/
PNG_SRC_PATH := libpng-1.5.6/
JPEG_SRC_PATH := jpeg-8c/
JASPER_SRC_PATH := jasper-1.900.1/
DEVIL_SRC_PATH := devil-1.7.8/
#libjpeg
include $(CLEAR_VARS)
LOCAL_MODULE := libjpeg
LOCAL_MODULE_FILENAME := libjpeg
LOCAL_SRC_FILES := \
${JPEG_SRC_PATH}jcapimin.c ${JPEG_SRC_PATH}jcapistd.c ${JPEG_SRC_PATH}jccoefct.c ${JPEG_SRC_PATH}jccolor.c ${JPEG_SRC_PATH}jcdctmgr.c ${JPEG_SRC_PATH}jchuff.c \
${JPEG_SRC_PATH}jcinit.c ${JPEG_SRC_PATH}jcmainct.c ${JPEG_SRC_PATH}jcmarker.c ${JPEG_SRC_PATH}jcmaster.c ${JPEG_SRC_PATH}jcomapi.c ${JPEG_SRC_PATH}jcparam.c \
${JPEG_SRC_PATH}jcprepct.c ${JPEG_SRC_PATH}jcsample.c ${JPEG_SRC_PATH}jctrans.c ${JPEG_SRC_PATH}jdapimin.c ${JPEG_SRC_PATH}jdapistd.c \
${JPEG_SRC_PATH}jdatadst.c ${JPEG_SRC_PATH}jdatasrc.c ${JPEG_SRC_PATH}jdcoefct.c ${JPEG_SRC_PATH}jdcolor.c ${JPEG_SRC_PATH}jddctmgr.c ${JPEG_SRC_PATH}jdhuff.c \
${JPEG_SRC_PATH}jdinput.c ${JPEG_SRC_PATH}jdmainct.c ${JPEG_SRC_PATH}jdmarker.c ${JPEG_SRC_PATH}jdmaster.c ${JPEG_SRC_PATH}jdmerge.c \
${JPEG_SRC_PATH}jdpostct.c ${JPEG_SRC_PATH}jdsample.c ${JPEG_SRC_PATH}jdtrans.c ${JPEG_SRC_PATH}jerror.c ${JPEG_SRC_PATH}jfdctflt.c ${JPEG_SRC_PATH}jfdctfst.c \
${JPEG_SRC_PATH}jfdctint.c ${JPEG_SRC_PATH}jidctflt.c ${JPEG_SRC_PATH}jidctfst.c ${JPEG_SRC_PATH}jidctint.c ${JPEG_SRC_PATH}jquant1.c \
${JPEG_SRC_PATH}jquant2.c ${JPEG_SRC_PATH}jutils.c ${JPEG_SRC_PATH}jmemmgr.c ${JPEG_SRC_PATH}jcarith.c ${JPEG_SRC_PATH}jdarith.c ${JPEG_SRC_PATH}jaricom.c
# Use the no backing store memory manager provided by
# libjpeg. See install.txt
LOCAL_SRC_FILES += \
${JPEG_SRC_PATH}jmemnobs.c
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
include $(BUILD_STATIC_LIBRARY)
#libtiff
include $(CLEAR_VARS)
LOCAL_MODULE := libtiff
LOCAL_CFLAGS := -g -Dlinux -DFT2_BUILD_LIBRARY=1 -DPHYSFS_NO_CDROM_SUPPORT=1 -DAL_ALEXT_PROTOTYPES=1 -DHAVE_GCC_DESTRUCTOR=1 -DOPT_GENERIC -DREAL_IS_FLOAT
LOCAL_CPPFLAGS := ${LOCAL_CFLAGS}
LOCAL_C_INCLUDES := \
${TIFF_SRC_PATH}libtiff/ \
${JPEG_SRC_PATH} \
LOCAL_SRC_FILES := \
${TIFF_SRC_PATH}libtiff/tif_dir.c \
${TIFF_SRC_PATH}libtiff/tif_codec.c \
${TIFF_SRC_PATH}libtiff/tif_predict.c \
${TIFF_SRC_PATH}libtiff/tif_tile.c \
${TIFF_SRC_PATH}libtiff/tif_version.c \
${TIFF_SRC_PATH}libtiff/tif_unix.c \
${TIFF_SRC_PATH}libtiff/tif_swab.c \
${TIFF_SRC_PATH}libtiff/tif_thunder.c \
${TIFF_SRC_PATH}libtiff/tif_next.c \
${TIFF_SRC_PATH}libtiff/tif_strip.c \
${TIFF_SRC_PATH}libtiff/tif_extension.c \
${TIFF_SRC_PATH}libtiff/tif_error.c \
${TIFF_SRC_PATH}libtiff/tif_dirwrite.c \
${TIFF_SRC_PATH}libtiff/tif_fax3sm.c \
${TIFF_SRC_PATH}libtiff/tif_ojpeg.c \
${TIFF_SRC_PATH}libtiff/tif_flush.c \
${TIFF_SRC_PATH}libtiff/tif_warning.c \
${TIFF_SRC_PATH}libtiff/tif_fax3.c \
${TIFF_SRC_PATH}libtiff/tif_jbig.c \
${TIFF_SRC_PATH}libtiff/tif_open.c \
${TIFF_SRC_PATH}libtiff/tif_write.c \
${TIFF_SRC_PATH}libtiff/tif_packbits.c \
${TIFF_SRC_PATH}libtiff/tif_compress.c \
${TIFF_SRC_PATH}libtiff/tif_color.c \
${TIFF_SRC_PATH}libtiff/tif_print.c \
${TIFF_SRC_PATH}libtiff/tif_zip.c \
${TIFF_SRC_PATH}libtiff/tif_aux.c \
${TIFF_SRC_PATH}libtiff/tif_dumpmode.c \
${TIFF_SRC_PATH}libtiff/tif_dirread.c \
${TIFF_SRC_PATH}libtiff/tif_getimage.c \
${TIFF_SRC_PATH}libtiff/tif_jpeg.c \
${TIFF_SRC_PATH}libtiff/tif_close.c \
${TIFF_SRC_PATH}libtiff/tif_read.c \
${TIFF_SRC_PATH}libtiff/tif_luv.c \
${TIFF_SRC_PATH}libtiff/tif_dirinfo.c \
${TIFF_SRC_PATH}libtiff/tif_lzw.c \
${TIFF_SRC_PATH}libtiff/tif_pixarlog.c \
${TIFF_SRC_PATH}port/lfind.c
LOCAL_LDLIBS := -llog -L../lib -lGLESv1_CM
LOCAL_STATIC_LIBRARIES := libjpeg libphysfs
include $(BUILD_SHARED_LIBRARY)
#libphysfs
include $(CLEAR_VARS)
LOCAL_MODULE := libphysfs
LOCAL_CFLAGS := -g -Dlinux -Dunix -DFT2_BUILD_LIBRARY=1 -DPHYSFS_NO_CDROM_SUPPORT=1 -DAL_ALEXT_PROTOTYPES=1 -DHAVE_GCC_DESTRUCTOR=1 -DOPT_GENERIC -DREAL_IS_FLOAT \
-DPHYSFS_SUPPORTS_APK=1 -DPHYSFS_SUPPORTS_ZIP=1 -DPHYSFS_SUPPORTS_ZIP=1 -DPHYSFS_SUPPORTS_7Z=1 -DPHYSFS_SUPPORTS_GRP=1 -DPHYSFS_SUPPORTS_QPAK=1 -DPHYSFS_SUPPORTS_HOG=1 -DPHYSFS_SUPPORTS_MVL=1 -DPHYSFS_SUPPORTS_WAD=1
LOCAL_CPPFLAGS := ${LOCAL_CFLAGS}
LOCAL_C_INCLUDES := \
${PHYSFS_SRC_PATH}
LOCAL_SRC_FILES := \
${PHYSFS_SRC_PATH}/physfs.c \
${PHYSFS_SRC_PATH}/physfs_byteorder.c \
${PHYSFS_SRC_PATH}/physfs_unicode.c \
${PHYSFS_SRC_PATH}/platform/os2.c \
${PHYSFS_SRC_PATH}/platform/pocketpc.c \
${PHYSFS_SRC_PATH}/platform/posix.c \
${PHYSFS_SRC_PATH}/platform/unix.c \
${PHYSFS_SRC_PATH}/platform/macosx.c \
${PHYSFS_SRC_PATH}/platform/windows.c \
${PHYSFS_SRC_PATH}/archivers/dir.c \
${PHYSFS_SRC_PATH}/archivers/grp.c \
${PHYSFS_SRC_PATH}/archivers/hog.c \
${PHYSFS_SRC_PATH}/archivers/lzma.c \
${PHYSFS_SRC_PATH}/archivers/mvl.c \
${PHYSFS_SRC_PATH}/archivers/qpak.c \
${PHYSFS_SRC_PATH}/archivers/wad.c \
${PHYSFS_SRC_PATH}/archivers/zip.c \
${PHYSFS_SRC_PATH}/archivers/apk.c \
${PHYSFS_SRC_PATH}/lzma/C/7zCrc.c \
${PHYSFS_SRC_PATH}/lzma/C/Archive/7z/7zBuffer.c \
${PHYSFS_SRC_PATH}/lzma/C/Archive/7z/7zDecode.c \
${PHYSFS_SRC_PATH}/lzma/C/Archive/7z/7zExtract.c \
${PHYSFS_SRC_PATH}/lzma/C/Archive/7z/7zHeader.c \
${PHYSFS_SRC_PATH}/lzma/C/Archive/7z/7zIn.c \
${PHYSFS_SRC_PATH}/lzma/C/Archive/7z/7zItem.c \
${PHYSFS_SRC_PATH}/lzma/C/Archive/7z/7zMethodID.c \
${PHYSFS_SRC_PATH}/lzma/C/Compress/Branch/BranchX86.c \
${PHYSFS_SRC_PATH}/lzma/C/Compress/Branch/BranchX86_2.c \
${PHYSFS_SRC_PATH}/lzma/C/Compress/Lzma/LzmaDecode.c \
${PHYSFS_SRC_PATH}/zlib123/adler32.c \
${PHYSFS_SRC_PATH}/zlib123/compress.c \
${PHYSFS_SRC_PATH}/zlib123/crc32.c \
${PHYSFS_SRC_PATH}/zlib123/deflate.c \
${PHYSFS_SRC_PATH}/zlib123/gzio.c \
${PHYSFS_SRC_PATH}/zlib123/infback.c \
${PHYSFS_SRC_PATH}/zlib123/inffast.c \
${PHYSFS_SRC_PATH}/zlib123/inflate.c \
${PHYSFS_SRC_PATH}/zlib123/inftrees.c \
${PHYSFS_SRC_PATH}/zlib123/trees.c \
${PHYSFS_SRC_PATH}/zlib123/uncompr.c \
${PHYSFS_SRC_PATH}/zlib123/zutil.c \
LOCAL_LDLIBS := -llog -L../lib -lGLESv1_CM
LOCAL_STATIC_LIBRARIES :=
include $(BUILD_SHARED_LIBRARY)
#libmng
include $(CLEAR_VARS)
LOCAL_MODULE := libmng
LOCAL_CFLAGS := -g -Dlinux -DFT2_BUILD_LIBRARY=1 -DPHYSFS_NO_CDROM_SUPPORT=1 -DAL_ALEXT_PROTOTYPES=1 -DHAVE_GCC_DESTRUCTOR=1 -DOPT_GENERIC -DREAL_IS_FLOAT
LOCAL_CPPFLAGS := ${LOCAL_CFLAGS}
LOCAL_C_INCLUDES := \
${JPEG_SRC_PATH} \
${MNG_SRC_PATH}
LOCAL_SRC_FILES := \
${MNG_SRC_PATH}libmng_write.c \
${MNG_SRC_PATH}libmng_object_prc.c \
${MNG_SRC_PATH}libmng_display.c \
${MNG_SRC_PATH}libmng_chunk_xs.c \
${MNG_SRC_PATH}libmng_chunk_io.c \
${MNG_SRC_PATH}libmng_read.c \
${MNG_SRC_PATH}libmng_prop_xs.c \
${MNG_SRC_PATH}libmng_filter.c \
${MNG_SRC_PATH}libmng_chunk_descr.c \
${MNG_SRC_PATH}libmng_cms.c \
${MNG_SRC_PATH}libmng_zlib.c \
${MNG_SRC_PATH}libmng_pixels.c \
${MNG_SRC_PATH}libmng_error.c \
${MNG_SRC_PATH}libmng_trace.c \
${MNG_SRC_PATH}libmng_jpeg.c \
${MNG_SRC_PATH}libmng_callback_xs.c \
${MNG_SRC_PATH}libmng_dither.c \
${MNG_SRC_PATH}libmng_hlapi.c \
${MNG_SRC_PATH}libmng_chunk_prc.c \
LOCAL_LDLIBS := -llog -L../lib -lGLESv1_CM
LOCAL_STATIC_LIBRARIES := libjpeg libphysfs
include $(BUILD_SHARED_LIBRARY)
#liblcms
include $(CLEAR_VARS)
LOCAL_MODULE := liblcms
LOCAL_CFLAGS := -g -Dlinux -DFT2_BUILD_LIBRARY=1 -DPHYSFS_NO_CDROM_SUPPORT=1 -DAL_ALEXT_PROTOTYPES=1 -DHAVE_GCC_DESTRUCTOR=1 -DOPT_GENERIC -DREAL_IS_FLOAT
LOCAL_CPPFLAGS := ${LOCAL_CFLAGS}
LOCAL_C_INCLUDES := \
${LCMS_SRC_PATH}include/ \
LOCAL_SRC_FILES := \
${LCMS_SRC_PATH}src/cmscam02.c \
${LCMS_SRC_PATH}src/cmserr.c \
${LCMS_SRC_PATH}src/cmstypes.c \
${LCMS_SRC_PATH}src/cmsmd5.c \
${LCMS_SRC_PATH}src/cmswtpnt.c \
${LCMS_SRC_PATH}src/cmsgmt.c \
${LCMS_SRC_PATH}src/cmspcs.c \
${LCMS_SRC_PATH}src/cmsopt.c \
${LCMS_SRC_PATH}src/cmscnvrt.c \
${LCMS_SRC_PATH}src/cmsps2.c \
${LCMS_SRC_PATH}src/cmssamp.c \
${LCMS_SRC_PATH}src/cmsplugin.c \
${LCMS_SRC_PATH}src/cmsmtrx.c \
${LCMS_SRC_PATH}src/cmspack.c \
${LCMS_SRC_PATH}src/cmsio0.c \
${LCMS_SRC_PATH}src/cmsgamma.c \
${LCMS_SRC_PATH}src/cmscgats.c \
${LCMS_SRC_PATH}src/cmsxform.c \
${LCMS_SRC_PATH}src/cmsnamed.c \
${LCMS_SRC_PATH}src/cmssm.c \
${LCMS_SRC_PATH}src/cmsio1.c \
${LCMS_SRC_PATH}src/cmsintrp.c \
${LCMS_SRC_PATH}src/cmslut.c \
${LCMS_SRC_PATH}src/cmsvirt.c \
LOCAL_LDLIBS := -llog -L../lib -lGLESv1_CM
LOCAL_STATIC_LIBRARIES :=
include $(BUILD_SHARED_LIBRARY)
#libpng
include $(CLEAR_VARS)
LOCAL_MODULE := libpng
LOCAL_CFLAGS := -g -Dlinux -DFT2_BUILD_LIBRARY=1 -DPHYSFS_NO_CDROM_SUPPORT=1 -DAL_ALEXT_PROTOTYPES=1 -DHAVE_GCC_DESTRUCTOR=1 -DOPT_GENERIC -DREAL_IS_FLOAT
LOCAL_CPPFLAGS := ${LOCAL_CFLAGS}
LOCAL_C_INCLUDES := \
${PNG_SRC_PATH} \
LOCAL_SRC_FILES := \
${PNG_SRC_PATH}pngerror.c \
${PNG_SRC_PATH}pngwio.c \
${PNG_SRC_PATH}pngwrite.c \
${PNG_SRC_PATH}pngwutil.c \
${PNG_SRC_PATH}pngwtran.c \
${PNG_SRC_PATH}pngset.c \
${PNG_SRC_PATH}pngtrans.c \
${PNG_SRC_PATH}example.c \
${PNG_SRC_PATH}png.c \
${PNG_SRC_PATH}pngrtran.c \
${PNG_SRC_PATH}pngmem.c \
${PNG_SRC_PATH}pngpread.c \
${PNG_SRC_PATH}pngrutil.c \
${PNG_SRC_PATH}pngrio.c \
${PNG_SRC_PATH}pngget.c \
${PNG_SRC_PATH}pngread.c \
LOCAL_LDLIBS := -llog -L../lib -lGLESv1_CM
LOCAL_STATIC_LIBRARIES := libphysfs
include $(BUILD_SHARED_LIBRARY)
#libjasper
include $(CLEAR_VARS)
LOCAL_MODULE := libjasper
LOCAL_CFLAGS := -g -Dlinux -DFT2_BUILD_LIBRARY=1 -DPHYSFS_NO_CDROM_SUPPORT=1 -DAL_ALEXT_PROTOTYPES=1 -DHAVE_GCC_DESTRUCTOR=1 -DOPT_GENERIC -DREAL_IS_FLOAT
LOCAL_CPPFLAGS := ${LOCAL_CFLAGS}
LOCAL_C_INCLUDES := \
${JASPER_SRC_PATH}src/libjasper/include \
${JPEG_SRC_PATH} \
LOCAL_SRC_FILES := \
${JASPER_SRC_PATH}src/libjasper/base/jas_cm.c \
${JASPER_SRC_PATH}src/libjasper/base/jas_getopt.c \
${JASPER_SRC_PATH}src/libjasper/base/jas_seq.c \
${JASPER_SRC_PATH}src/libjasper/base/jas_malloc.c \
${JASPER_SRC_PATH}src/libjasper/base/jas_init.c \
${JASPER_SRC_PATH}src/libjasper/base/jas_debug.c \
${JASPER_SRC_PATH}src/libjasper/base/jas_stream.c \
${JASPER_SRC_PATH}src/libjasper/base/jas_string.c \
${JASPER_SRC_PATH}src/libjasper/base/jas_version.c \
${JASPER_SRC_PATH}src/libjasper/base/jas_tmr.c \
${JASPER_SRC_PATH}src/libjasper/base/jas_image.c \
${JASPER_SRC_PATH}src/libjasper/base/jas_tvp.c \
${JASPER_SRC_PATH}src/libjasper/base/jas_iccdata.c \
${JASPER_SRC_PATH}src/libjasper/base/jas_icc.c \
${JASPER_SRC_PATH}src/libjasper/jpc/jpc_mqcod.c \
${JASPER_SRC_PATH}src/libjasper/jpc/jpc_t1enc.c \
${JASPER_SRC_PATH}src/libjasper/jpc/jpc_dec.c \
${JASPER_SRC_PATH}src/libjasper/jpc/jpc_math.c \
${JASPER_SRC_PATH}src/libjasper/jpc/jpc_util.c \
${JASPER_SRC_PATH}src/libjasper/jpc/jpc_bs.c \
${JASPER_SRC_PATH}src/libjasper/jpc/jpc_tagtree.c \
${JASPER_SRC_PATH}src/libjasper/jpc/jpc_t1cod.c \
${JASPER_SRC_PATH}src/libjasper/jpc/jpc_t2enc.c \
${JASPER_SRC_PATH}src/libjasper/jpc/jpc_mqenc.c \
${JASPER_SRC_PATH}src/libjasper/jpc/jpc_enc.c \
${JASPER_SRC_PATH}src/libjasper/jpc/jpc_qmfb.c \
${JASPER_SRC_PATH}src/libjasper/jpc/jpc_t1dec.c \
${JASPER_SRC_PATH}src/libjasper/jpc/jpc_cs.c \
${JASPER_SRC_PATH}src/libjasper/jpc/jpc_t2cod.c \
${JASPER_SRC_PATH}src/libjasper/jpc/jpc_tsfb.c \
${JASPER_SRC_PATH}src/libjasper/jpc/jpc_mqdec.c \
${JASPER_SRC_PATH}src/libjasper/jpc/jpc_t2dec.c \
${JASPER_SRC_PATH}src/libjasper/jpc/jpc_mct.c \
${JASPER_SRC_PATH}src/libjasper/dummy.c \
${JASPER_SRC_PATH}src/libjasper/pnm/pnm_dec.c \
${JASPER_SRC_PATH}src/libjasper/pnm/pnm_enc.c \
${JASPER_SRC_PATH}src/libjasper/pnm/pnm_cod.c \
${JASPER_SRC_PATH}src/libjasper/jp2/jp2_enc.c \
${JASPER_SRC_PATH}src/libjasper/jp2/jp2_cod.c \
${JASPER_SRC_PATH}src/libjasper/jp2/jp2_dec.c \
${JASPER_SRC_PATH}src/libjasper/pgx/pgx_dec.c \
${JASPER_SRC_PATH}src/libjasper/pgx/pgx_enc.c \
${JASPER_SRC_PATH}src/libjasper/pgx/pgx_cod.c \
${JASPER_SRC_PATH}src/libjasper/bmp/bmp_enc.c \
${JASPER_SRC_PATH}src/libjasper/bmp/bmp_dec.c \
${JASPER_SRC_PATH}src/libjasper/bmp/bmp_cod.c \
${JASPER_SRC_PATH}src/libjasper/jpg/jpg_val.c \
${JASPER_SRC_PATH}src/libjasper/jpg/jpg_enc.c \
${JASPER_SRC_PATH}src/libjasper/jpg/jpg_dec.c \
${JASPER_SRC_PATH}src/libjasper/ras/ras_cod.c \
${JASPER_SRC_PATH}src/libjasper/ras/ras_dec.c \
${JASPER_SRC_PATH}src/libjasper/ras/ras_enc.c \
${JASPER_SRC_PATH}src/libjasper/mif/mif_cod.c \
LOCAL_LDLIBS := -llog -L../lib -lGLESv1_CM
LOCAL_STATIC_LIBRARIES := libjpeg
include $(BUILD_SHARED_LIBRARY)
#libdevil
include $(CLEAR_VARS)
LOCAL_MODULE := libdevil
LOCAL_CFLAGS := -g -Dlinux -DFT2_BUILD_LIBRARY=1 -DPHYSFS_NO_CDROM_SUPPORT=1 -DAL_ALEXT_PROTOTYPES=1 -DHAVE_GCC_DESTRUCTOR=1 -DOPT_GENERIC -DREAL_IS_FLOAT -fexceptions
LOCAL_CPPFLAGS := ${LOCAL_CFLAGS}
LOCAL_C_INCLUDES := \
${DEVIL_SRC_PATH}include \
${DEVIL_SRC_PATH}src-IL/include \
${DEVIL_SRC_PATH}src-ILU/include \
${JASPER_SRC_PATH}src/libjasper/include \
${PHYSFS_SRC_PATH} \
${PHYSFS_SRC_PATH}zlib123 \
${PNG_SRC_PATH} \
${MNG_SRC_PATH} \
${JPEG_SRC_PATH} \
${LCMS_SRC_PATH}include/ \
${TIFF_SRC_PATH}libtiff/ \
LOCAL_SRC_FILES := \
${DEVIL_SRC_PATH}src-IL/src/il_sun.c \
${DEVIL_SRC_PATH}src-IL/src/il_wdp.c \
${DEVIL_SRC_PATH}src-IL/src/il_doom.c \
${DEVIL_SRC_PATH}src-IL/src/il_jp2.c \
${DEVIL_SRC_PATH}src-IL/src/il_tpl.c \
${DEVIL_SRC_PATH}src-IL/src/il_size.c \
${DEVIL_SRC_PATH}src-IL/src/il_rle.c \
${DEVIL_SRC_PATH}src-IL/src/il_gif.c \
${DEVIL_SRC_PATH}src-IL/src/il_states.c \
${DEVIL_SRC_PATH}src-IL/src/il_psp.c \
${DEVIL_SRC_PATH}src-IL/src/il_devil.c \
${DEVIL_SRC_PATH}src-IL/src/il_convbuff.c \
${DEVIL_SRC_PATH}src-IL/src/il_ftx.c \
${DEVIL_SRC_PATH}src-IL/src/il_vtf.c \
${DEVIL_SRC_PATH}src-IL/src/il_iff.c \
${DEVIL_SRC_PATH}src-IL/src/il_lif.c \
${DEVIL_SRC_PATH}src-IL/src/il_pcx.c \
${DEVIL_SRC_PATH}src-IL/src/il_io.c \
${DEVIL_SRC_PATH}src-IL/src/il_files.c \
${DEVIL_SRC_PATH}src-IL/src/il_fastconv.c \
${DEVIL_SRC_PATH}src-IL/src/il_error.c \
${DEVIL_SRC_PATH}src-IL/src/il_main.c \
${DEVIL_SRC_PATH}src-IL/src/il_utx.cpp \
${DEVIL_SRC_PATH}src-IL/src/il_pcd.c \
${DEVIL_SRC_PATH}src-IL/src/il_neuquant.c \
${DEVIL_SRC_PATH}src-IL/src/il_dds.c \
${DEVIL_SRC_PATH}src-IL/src/il_dicom.c \
${DEVIL_SRC_PATH}src-IL/src/il_wal.c \
${DEVIL_SRC_PATH}src-IL/src/il_icon.c \
${DEVIL_SRC_PATH}src-IL/src/il_blp.c \
${DEVIL_SRC_PATH}src-IL/src/il_mp3.c \
${DEVIL_SRC_PATH}src-IL/src/il_header.c \
${DEVIL_SRC_PATH}src-IL/src/il_alloc.c \
${DEVIL_SRC_PATH}src-IL/src/il_sgi.c \
${DEVIL_SRC_PATH}src-IL/src/il_stack.c \
${DEVIL_SRC_PATH}src-IL/src/il_texture.c \
${DEVIL_SRC_PATH}src-IL/src/altivec_typeconversion.c \
${DEVIL_SRC_PATH}src-IL/src/il_targa.c \
${DEVIL_SRC_PATH}src-IL/src/il_bmp.c \
${DEVIL_SRC_PATH}src-IL/src/il_mdl.c \
${DEVIL_SRC_PATH}src-IL/src/il_pix.c \
${DEVIL_SRC_PATH}src-IL/src/il_pnm.c \
${DEVIL_SRC_PATH}src-IL/src/il_ilbm.c \
${DEVIL_SRC_PATH}src-IL/src/il_icns.c \
${DEVIL_SRC_PATH}src-IL/src/il_cut.c \
${DEVIL_SRC_PATH}src-IL/src/il_profiles.c \
${DEVIL_SRC_PATH}src-IL/src/il_hdr.c \
${DEVIL_SRC_PATH}src-IL/src/il_register.c \
${DEVIL_SRC_PATH}src-IL/src/il_exr.cpp \
${DEVIL_SRC_PATH}src-IL/src/il_iwi.c \
${DEVIL_SRC_PATH}src-IL/src/il_mng.c \
${DEVIL_SRC_PATH}src-IL/src/il_rot.c \
${DEVIL_SRC_PATH}src-IL/src/il_jpeg.c \
${DEVIL_SRC_PATH}src-IL/src/il_png.c \
${DEVIL_SRC_PATH}src-IL/src/il_pxr.c \
${DEVIL_SRC_PATH}src-IL/src/il_nvidia.cpp \
${DEVIL_SRC_PATH}src-IL/src/il_squish.cpp \
${DEVIL_SRC_PATH}src-IL/src/il_utility.c \
${DEVIL_SRC_PATH}src-IL/src/il_internal.c \
${DEVIL_SRC_PATH}src-IL/src/il_psd.c \
${DEVIL_SRC_PATH}src-IL/src/il_endian.c \
${DEVIL_SRC_PATH}src-IL/src/il_quantizer.c \
${DEVIL_SRC_PATH}src-IL/src/il_wbmp.c \
${DEVIL_SRC_PATH}src-IL/src/il_manip.c \
${DEVIL_SRC_PATH}src-IL/src/il_pic.c \
${DEVIL_SRC_PATH}src-IL/src/il_tiff.c \
${DEVIL_SRC_PATH}src-IL/src/il_pal.c \
${DEVIL_SRC_PATH}src-IL/src/il_dds-save.c \
${DEVIL_SRC_PATH}src-IL/src/il_raw.c \
${DEVIL_SRC_PATH}src-IL/src/il_convert.c \
${DEVIL_SRC_PATH}src-IL/src/il_dcx.c \
${DEVIL_SRC_PATH}src-IL/src/il_fits.c \
${DEVIL_SRC_PATH}src-IL/src/il_xpm.c \
${DEVIL_SRC_PATH}src-IL/src/il_bits.c \
${DEVIL_SRC_PATH}src-IL/src/altivec_common.c \
${DEVIL_SRC_PATH}src-IL/src/il_dpx.c \
${DEVIL_SRC_PATH}src-IL/src/il_rawdata.c \
${DEVIL_SRC_PATH}src-ILU/src/ilu_alloc.c \
${DEVIL_SRC_PATH}src-ILU/src/ilu_error.c \
${DEVIL_SRC_PATH}src-ILU/src/ilu_filter_rcg.c \
${DEVIL_SRC_PATH}src-ILU/src/ilu_filter.c \
${DEVIL_SRC_PATH}src-ILU/src/ilu_internal.c \
${DEVIL_SRC_PATH}src-ILU/src/ilu_main.c \
${DEVIL_SRC_PATH}src-ILU/src/ilu_manip.c \
${DEVIL_SRC_PATH}src-ILU/src/ilu_mipmap.c \
${DEVIL_SRC_PATH}src-ILU/src/ilu_noise.c \
${DEVIL_SRC_PATH}src-ILU/src/ilu_region.c \
${DEVIL_SRC_PATH}src-ILU/src/ilu_rotate.c \
${DEVIL_SRC_PATH}src-ILU/src/ilu_scale.c \
${DEVIL_SRC_PATH}src-ILU/src/ilu_scale2d.c \
${DEVIL_SRC_PATH}src-ILU/src/ilu_scale3d.c \
${DEVIL_SRC_PATH}src-ILU/src/ilu_scaling.c \
${DEVIL_SRC_PATH}src-ILU/src/ilu_states.c \
${DEVIL_SRC_PATH}src-ILU/src/ilu_utilities.c \
LOCAL_LDLIBS := -llog -L../lib -lGLESv1_CM -DFT2_BUILD_LIBRARY=1
LOCAL_STATIC_LIBRARIES := \
libjasper \
libpng \
libmng \
libjpeg \
liblcms \
libphysfs \
libtiff
include $(BUILD_SHARED_LIBRARY)
#mylib
include $(CLEAR_VARS)
LOCAL_MODULE := libmylib
LOCAL_CFLAGS := -g -Dlinux -DFT2_BUILD_LIBRARY=1 -DPHYSFS_NO_CDROM_SUPPORT=1 -DAL_ALEXT_PROTOTYPES=1 -DHAVE_GCC_DESTRUCTOR=1 -DOPT_GENERIC -DREAL_IS_FLOAT -fexceptions
LOCAL_CPPFLAGS := ${LOCAL_CFLAGS}
LOCAL_C_INCLUDES := \
${DEVIL_SRC_PATH}include \
${DEVIL_SRC_PATH}src-IL/include \
${DEVIL_SRC_PATH}src-ILU/include \
${JASPER_SRC_PATH}src/libjasper/include \
${PHYSFS_SRC_PATH} \
${PHYSFS_SRC_PATH}zlib123 \
${PNG_SRC_PATH} \
${MNG_SRC_PATH} \
${JPEG_SRC_PATH} \
${LCMS_SRC_PATH}include/ \
${TIFF_SRC_PATH}libtiff/ \
LOCAL_SRC_FILES := native.cpp
LOCAL_LDLIBS := -llog -lGLESv2
LOCAL_STATIC_LIBRARIES := \
libjasper \
libpng \
libmng \
libjpeg \
liblcms \
libphysfs \
libtiff \
libdevil \
include $(BUILD_SHARED_LIBRARY)
y mi aplicación.mk
APP_STL := gnustl_static
APP_ABI := armeabi-v7a
después de buscar en toda mi carpeta jni para elpng_set_longjmp_fn
cadena, la encontré en los siguientes archivos en mi carpeta libpng. A continuación se presentan fragmentos de código.
pngerror.c
#ifdef PNG_SETJMP_SUPPORTED
/* This API only exists if ANSI-C style error handling is used,
* otherwise it is necessary for png_default_error to be overridden.
*/
jmp_buf* PNGAPI
png_set_longjmp_fn(png_structrp png_ptr, png_longjmp_ptr longjmp_fn,
size_t jmp_buf_size)
{
/* From libpng 1.6.0 the app gets one chance to set a 'jmpbuf_size' value
* and it must not change after that. Libpng doesn't care how big the
* buffer is, just that it doesn't change.
*
* If the buffer size is no *larger* than the size of jmp_buf when libpng is
simbolos.def
;Version 1.6.2
;--------------------------------------------------------------
; LIBPNG symbol list as a Win32 DEF file
; Contains all the symbols that can be exported from libpng
;--------------------------------------------------------------
LIBRARY
EXPORTS
png_access_version_number @1
png_set_sig_bytes @2
png_sig_cmp @3
png_create_read_struct @4
png_create_write_struct @5
png_get_compression_buffer_size @6
png_set_compression_buffer_size @7
png_set_longjmp_fn @8
png_longjmp @9
png.h
#ifdef PNG_SETJMP_SUPPORTED
/* This function returns the jmp_buf built in to *png_ptr. It must be
* supplied with an appropriate 'longjmp' function to use on that jmp_buf
* unless the default error function is overridden in which case NULL is
* acceptable. The size of the jmp_buf is checked against the actual size
* allocated by the library - the call will return NULL on a mismatch
* indicating an ABI mismatch.
*/
PNG_EXPORT(8, jmp_buf*, png_set_longjmp_fn, (png_structrp png_ptr,
png_longjmp_ptr longjmp_fn, size_t jmp_buf_size));
# define png_jmpbuf(png_ptr) \
(*png_set_longjmp_fn((png_ptr), longjmp, (sizeof (jmp_buf))))
#else
Cualquier ayuda para que Kitkat lo encuentre es muy apreciada.