我正尝试在我的安卓项目中使用pngquant.org/lib上的png量化库,使用的是OS上的NDK r10 (64位)。
我在编译这个库方面正在取得进展。我现在遇到的问题是size_t类型无法解决。我尝试包含以下文件夹:
LOCAL_C_INCLUDES := $(NDK_TOOLCHAIN)/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9/include但这无济于事。
我真的会对一个包含pngquant的空的Android项目感兴趣。
任何帮助都是非常感谢的。
很抱歉更改了问题,但我最初问的问题中有一些不正确的事实。
发布于 2014-08-06 22:28:59
我没有足够的信息来直接解决您的特定问题,您是否正在尝试使用独立的工具链?
在为Android构建时,由于您有多个架构可供选择,并且工具链有点复杂,因此最好使用NDK中的ndk-build脚本。
我在这里创建了一个项目,您可以将其集成到您的安卓项目目录中:https://github.com/android-native-libraries/pngquant-android
原始库使用的是配置脚本,但我没有扩展这些脚本,而是重写了NDK Makefile,以直接编译所有的lib源代码,并使用相同的cflag (openmp,sse...)
Android.mk:
LOCAL_PATH := $(call my-dir)
SRC_PATH := pngquant/lib
include $(CLEAR_VARS)
LOCAL_MODULE := imagequant
LOCAL_SRC_FILES := \
$(SRC_PATH)/blur.c \
$(SRC_PATH)/libimagequant.c \
$(SRC_PATH)/mediancut.c \
$(SRC_PATH)/mempool.c \
$(SRC_PATH)/nearest.c \
$(SRC_PATH)/pam.c \
$(SRC_PATH)/viter.c
LOCAL_C_INCLUDES := pngquant/lib
LOCAL_CFLAGS += -O3 -fno-math-errno -funroll-loops -fomit-frame-pointer -Wall -std=c99 -fopenmp
LOCAL_LDFLAGS += -fopenmp
ifeq ($(TARGET_ARCH_ABI),x86)
LOCAL_CFLAGS += -mtune=atom -msse -mfpmath=sse -mssse3 -DUSE_SSE=1
endif
include $(BUILD_SHARED_LIBRARY)您可以扩展此Android.mk文件,以使用libimagequant添加您自己的本地库: include $(CLEAR_VARS) LOCAL_MODULE :=您的lib LOCAL_SRC_FILES :=您的源。c LOCAL_C_INCLUDES := pngquant/lib LOCAL_SHARED_LIBRARIES := imagequant
LOCAL_CFLAGS += -O3 -fno-math-errno -funroll-loops -fomit-frame-pointer -Wall -std=c99 -fopenmp
LOCAL_LDFLAGS += -fopenmp
ifeq ($(TARGET_ARCH_ABI),x86)
LOCAL_CFLAGS += -mtune=atom -msse -mfpmath=sse -mssse3 -DUSE_SSE=1
endif
include $(BUILD_SHARED_LIBRARY)发布于 2015-07-27 06:18:41
如果你只想在默认设置下使用这个库,我已经做了一个simple Android library,它可能适合你的目的。
在您的build.gradle中:
dependencies {
compile 'com.ndahlquist:pngquant-android:0.2'
}在你的Android应用中:
File inputPngFile = getYourPng();
File outputPngFile = getOutputFile()
new LibPngQuant().pngQuantFile(inputFile, outputFile);https://stackoverflow.com/questions/25116305
复制相似问题