LibjpegTurbo:
既然你看到这篇文章了,大概了解了LibjpegTurbo的作用了。这里不做多的介绍,官方生成LibjpegTurbo速度能提升2-6倍,根据实际测试,Turbo版本确实有提升,但是1.5.x版本和2.0.x版本速度差距较大,我们选择最新的release版本libjpeg2.0.2,在这里下载:https://sourceforge.net/projects/libjpeg-turbo/ Git地址自行搜索。
编译方法:
- cmake+nasm+mingw编译静态库
- Androidstudio编译动态库
AndroidStudio自带cmake编译工具和NDK,提供非常便捷的编译方式。我们首先介绍方法一。
Androidstudio编译动态库:
- AS下载cmake和ndk,还需要自行下载一份ndk-16b,因为libjpegturbo编译可能对NDK有要求,如果在ndk-20上出现问题,可以换用ndk-16
- 下载2.0.x以上源码,不建议1.5.x
- 用AS创建C++项目,将源码放在cpp目录下面,如下图:
-
- 配置build.gradle,选择cmake path如下:
-
externalNativeBuild { cmake { path "src/main/cpp/libjpeg-turbo-1.5.3/CMakeLists.txt" version "3.10.2" } }
-
externalNativeBuild { cmake { cppFlags "-std=c++11" //cppFlags "-std=c++11 -frtti -fexceptions" //arguments "-DANDROID_PLATFORM=22" // Passes optional arguments to CMake. arguments "-DANDROID_ARM_NEON=TRUE", "-DANDROID_TOOLCHAIN=clang" // Sets optional flags for the C compiler. cFlags "-D_EXAMPLE_C_FLAG1", "-D_EXAMPLE_C_FLAG2" // Sets a flag to enable format macro constants for the C++ compiler. cppFlags "-D__STDC_FORMAT_MACROS" } ndk { abiFilters 'armeabi-v7a','arm64-v8a','x86', 'x86_64' //abiFilters "arm64-v8a" } }
配置好后,在上方build中选择make project。
-
同时尽量选择release版本,因为debug和release编译的so文件,实际测试速度差异巨大,release版本要快很多。配置如下图:
-
生成的so文件在build-cmake目录下查找,记得copy出来,clean下就没了
原生cmake编译:
需要的软件环境:
- libjpeg-turbo 源码
在libjpeg-turbo官网下载源码,建议使用2.0.x -
CMake
- CMake v2.8.8 或以上版本,安装时勾选“Add CMake to the system PATH ...”,或把CMake安装路径手动添加到系统环境变量PATH中。
- 安装完之后在命令提示符工具中使用“cmake -version”验证是否安装配置成功。
-
MinGW
- 如果在Windows系统上构建,推荐使用MinGW-builds或tdm-gcc。它们能够在开始菜单生成一个启动相应编译器的命令提示符链接。
- 由于本机安装了MinGW,所以就不再需要上面提到的那两个工具了,只需确保“mingw32-make.exe”的安装路径在系统环境变量PATH中即可。
- 安装完之后在命令提示符工具中使用“mingw32-make -version”验证是否安装配置成功。
- NASM
NASM0.98 或以上版本(如果构建64位库则需要NASM 2.05或以上版本)。下载NASM后解压,只需把NASM目录手动添加到系统环境变量PATH中即可。
编译:
- 源码目录创建build文件夹
- 打开cmd
cd {build_directory}
cmake -G "MinGW Makefiles" {source_directory}
mingw32-make
最后等到编译完成就可以了。目录如下:
附上我编译的文件:https://download.youkuaiyun.com/download/qq_36332133/11670965