美文网首页Android技术知识Android进阶之路freeCode@IT
图片压缩—开发属于自己的SDK(一)

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

作者: CaoMeng | 来源:发表于2019-06-14 11:29 被阅读2次

    前言:

    之前一直在学习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.

    相关文章

      网友评论

        本文标题:图片压缩—开发属于自己的SDK(一)

        本文链接:https://www.haomeiwen.com/subject/zdvsfctx.html