文章目录
一、 libwebp 源码下载
二、 libwebp 源码编译脚本修改
三、 libwebp 函数库编译
四、参考资料
一、 libwebp 源码下载
Google 提供了一系列的 WebP 相关工具和函数库 , 如 cwebp , dwebp , gif2webp , img2webp 等工具 , libwebp 函数库 ;
Google WebP 主页 : https://developers.google.com/speed/webp
WebP 相关工具下载页 : https://developers.google.com/speed/webp/download
WebP工具和函数库使用文档 : https://developers.google.com/speed/webp/docs/using
下载 WebP 库源码 :
二、 libwebp 源码编译脚本修改
将该源码解压 , 该项目的源码可以使用多种方式编译 , 有 CMakeLists.txt , Android.mk , Makefile , configure 各种编译 C/C++ 代码的构建脚本 , 说明该项目提供了很多种构建方式 , 任选一种都可以编译出想要的结果 ;
这里选择使用 Android.mk 方式进行编译 ; 之前使用 Eclipse + ADT 开发 NDK 功能时使用 Android.mk 构建 C/C++ 程序 , 使用 Android Studio 之后 , 就开始使用 CMakeLists.txt 构建脚本了 ;
具体的编译方式可以参考 https://developers.google.com/speed/webp/docs/using 中的相关文档 ;
打开 Android.mk 构建脚本 , 该构建脚本需要进行配置 , 在第 2 22 换行添加如下配置 , 表示使用 NDK 进行编译时 , 生成 so 动态库 , 以方便在 Android 中使用 ;
ENABLE_SHARED := 1
定位到 # libwebp 所在行 ,
################################################################################ # libwebp include $(CLEAR_VARS) LOCAL_SRC_FILES := \ $(dsp_enc_srcs) \ $(enc_srcs) \ $(utils_enc_srcs) \ LOCAL_CFLAGS := $(WEBP_CFLAGS) LOCAL_C_INCLUDES += $(LOCAL_PATH)/src # prefer arm over thumb mode for performance gains LOCAL_ARM_MODE := arm LOCAL_WHOLE_STATIC_LIBRARIES := webpdecoder_static LOCAL_MODULE := webp ifeq ($(ENABLE_SHARED),1) include $(BUILD_SHARED_LIBRARY) else include $(BUILD_STATIC_LIBRARY) endif ################################################################################
LOCAL_MODULE := webp 表示编译的该模块是 webp 模块 , 模块名称是 webp , 编译出的动态库是 libwebp.so ;
LOCAL_SRC_FILES 指定的是编译的源文件 , 在该处多附加一个源文件 , " swig/libwebp_java_wrap.c " ;
LOCAL_SRC_FILES := \ $(dsp_enc_srcs) \ $(enc_srcs) \ $(utils_enc_srcs) \ swig/libwebp_java_wrap.c \