Android技术知识Android进阶之路freeCode@IT

图片压缩—开发属于自己的SDK(一)

2019-06-14  本文已影响2人  CaoMeng

前言:

之前一直在学习NDK开发,到目前为止自己的项目中还没有真正用到NDK东西,学了不用等于没学,而且还浪费自己的时间,趁着自己没事的时候自己搞一波NDK的东西,顺便把它弄成SDK,方便以后项目的移植使用。
相信大家平时项目中用的很多鲁班压缩、Android系统自带的压缩、区别我就不在这里细讲了。
我想说的的是:基于JPEG第三方库压缩,好了废话少说,去编译库吧!
Step1:下载NDK(Linux)

1、下载链接:
页面链接:https://developer.android.com/ndk/downloads/
NDK-r19c:https://dl.google.com/android/repository/android-ndk-r19c-linux-x86_64.zip
2、解压下载下来NDK最新稳定版 (r19c):

unzip android-ndk-r19c-linux-x86_64.zip

Step2:下载LibJpeg库(Linux)

1、下载链接:
页面链接:https://libjpeg-turbo.org/

LibJpeg库下载
下载链接(最新版本2.0.2):https://github.com/libjpeg-turbo/libjpeg-turbo/archive/2.0.2.tar.gz
2、解压LibJpeg库:

tar xvf 2.0.2.tar.gz

3、How to compile?(编译流程)


编译文档 编译要求

备注:编译针对于所有的系统要求:1、CMake 版本>=2.8.12
2、如果需要编译x86、x86-64CPU架构需要安装NASM或者YASM(NASM版本>=2.10)
3、在编译文档找到适合自己的CPU架构编译脚本(本文是编译CPU架构是:armeabi-va7 备注:基本上兼容市面上绝大部分手机了)

# Set these variables to suit your needs
#配置NDK的路径
NDK_PATH={full path to the NDK directory-- for example,
  /opt/android/android-ndk-r16b}
#编译的方式 
#gcc:需要NDK-r16b以及更早以前版本
#clang:需要NDK-r17c以及更新的版本
TOOLCHAIN={"gcc" or "clang"-- "gcc" must be used with NDK r16b and earlier,
  and "clang" must be used with NDK r17c and later}
#配置编译好的库支持Android最低版本
ANDROID_VERSION={the minimum version of Android to support-- for example,
  "16", "19", etc.}

cd {build_directory}
cmake -G"Unix Makefiles" \
  -DANDROID_ABI=armeabi-v7a \
  -DANDROID_ARM_MODE=arm \
  -DANDROID_PLATFORM=android-${ANDROID_VERSION} \
  -DANDROID_TOOLCHAIN=${TOOLCHAIN} \
  -DCMAKE_ASM_FLAGS="--target=arm-linux-androideabi${ANDROID_VERSION}" \
  -DCMAKE_TOOLCHAIN_FILE=${NDK_PATH}/build/cmake/android.toolchain.cmake \
  [additional CMake flags] {source_directory}
make
Step3:CMake下载安装(Linux)

1、页面连接:https://cmake.org/download/
2、下载链接:https://github.com/Kitware/CMake/releases/download/v3.14.3/cmake-3.14.3.tar.gz
3、解压CMake

tar zxvf cmake-3.14.3.tar.gz

4、进入到解压好的cmake-3.14.3文件夹
执行操作:

1、./bootstarp
2、make install

cmake --version能看到版本号表示安装成功了


CMake安装成功.png
Step4:开始编译libjpeg库

1、进入 libjpeg-turbo-2.0.2文件夹

cd libjpeg-turbo-2.0.2/

2、创建build.sh编译脚本

vim build.sh

3、编译的脚本

#!/bin/bash

# Set these variables to suit your needs

NDK_PATH=../android-ndk-r19c

TOOLCHAIN=clang


ANDROID_VERSION=18

cmake -G"Unix Makefiles" \
  -DANDROID_ABI=armeabi-v7a \
  -DANDROID_ARM_MODE=arm \
  -DANDROID_PLATFORM=android-${ANDROID_VERSION} \
  -DANDROID_TOOLCHAIN=${TOOLCHAIN} \
  -DCMAKE_ASM_FLAGS="--target=arm-linux-androideabi${ANDROID_VERSION}" \
  -DCMAKE_TOOLCHAIN_FILE=${NDK_PATH}/build/cmake/android.toolchain.cmake \

make

保存并退出当前脚本文件!!!
4、给build.sh加读写权限

chmod +x build.sh

5、执行build.sh脚本

./build.sh

一切顺利,你会看到当前libjpeg-turbo-2.0.2文件夹多了libjpeg.a、libjpeg.so等文件。说明编译成功了!

Step6:导出相关的文件

导出命令:

sz libturbojpeg.a

其他文件依次类推:

jconfig.h、jerror.h、jmorecfg.h、jpeglib.h、turbojpeg.h

这里已经将libjpeg的可执行文件编译好了。接下来应该创建NDK工程并配置CMake等相关信息了。下一篇文章介绍怎么配置CMake.

上一篇下一篇

猜你喜欢

热点阅读