前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Android 安装包优化】WebP 应用 ( libwebp 源码下载 | Android.mk 和 Application.mk 构建脚本修改 | libwebp 函数库编译 )

【Android 安装包优化】WebP 应用 ( libwebp 源码下载 | Android.mk 和 Application.mk 构建脚本修改 | libwebp 函数库编译 )

作者头像
韩曙亮
发布2023-03-29 10:26:50
1.1K0
发布2023-03-29 10:26:50
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

一、 libwebp 源码下载


Google 提供了一系列的 WebP 相关工具和函数库 , 如 cwebp , dwebp , gif2webp , img2webp 等工具 , libwebp 函数库 ;

下载 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

换行添加如下配置 , 表示使用 NDK 进行编译时 , 生成 so 动态库 , 以方便在 Android 中使用 ;

代码语言:javascript
复制
ENABLE_SHARED := 1
在这里插入图片描述
在这里插入图片描述

定位到 # libwebp 所在行 ,

代码语言:javascript
复制
################################################################################
# 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 " ;

代码语言:javascript
复制
LOCAL_SRC_FILES := \
    $(dsp_enc_srcs) \
    $(enc_srcs) \
    $(utils_enc_srcs) \
    swig/libwebp_java_wrap.c \

Android NDK 编译构建脚本参考文档 :

在源码根目录中 , 创建 Application.mk 配置文件 ,

在这里插入图片描述
在这里插入图片描述

编辑 Application.mk 构建脚本 ;

代码语言:javascript
复制
APP_ABI := armeabi-v7a arm64-v8a x86
APP_PLATFORM := android-14

APP_ABI := armeabi-v7a arm64-v8a x86 指定编译的 CPU 架构 ;

APP_PLATFORM := android-14 指定编译的最小平台版本 ;

Android NDK 编译构建脚本参考文档 :

三、 libwebp 函数库编译


为了方便 ndk-build 编译 , 这里将源码根目录 libwebp-0.6.1 改名为 jni , 在 jni 的上一级目录执行

代码语言:javascript
复制
Y:\001_DevelopTools\002_Android_SDK\ndk\22.0.7026061\ndk-build.cmd

命令 , 其中 Y:\001_DevelopTools\002_Android_SDK\ndk\22.0.7026061\ 是 NDK 的绝对了路径 ;

在这里插入图片描述
在这里插入图片描述

执行过程 :

在这里插入图片描述
在这里插入图片描述

执行完成后 , 生成如下两个目录 : libs 和 obj ;

在这里插入图片描述
在这里插入图片描述

四、参考资料


参考文档 :

Android NDK 编译构建脚本参考文档 :

博客资源 :

博客源码 :

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-04-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、 libwebp 源码下载
  • 二、 libwebp 源码编译脚本修改
  • 三、 libwebp 函数库编译
  • 四、参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档