董志强 2019-06-30
终于有时间写博客了,en~~~~
之前做电商项目,遇到项目中大量的图片质量处理问题,跳过官方的skia)直接利用libjpeg-turbo处理图片
先说下编译静态库与动态库后面有时间再写下如何利用libjpeg-turbo进行图片质量处理的专题
os | cmake | ndk |
---|---|---|
macOS Mojave 10.14.2 | 3.10.2.4988404 | android-ndk-r16b |
按照官方的BUILDING.md中的编译脚本稍作修改命名为build.sh
#!/bin/bash #ndk所在目录 NDK_PATH=/Users/hetao/Documents/android-ndk-r16b #编译环境这里是 macOS BUILD_PLATFORM=darwin-x86_64 #编译工具链版本 TOOLCHAIN_VERSION=4.9 #最低兼容 ANDROID_VERSION=14 #添加cmake环境变量 这里是android sdk中的 export PATH="/Users/hetao/Documents/android-sdk-macosx/cmake/3.10.2.4988404/bin":"$PATH" #源码目录 这里是当前脚本所在目录 MY_SOURCE_DIR=$(pwd) # 生成目标文件目录 PREFIX=$(pwd)/android # 目标平台 HOST=arm-linux-androideabi SYSROOT=${NDK_PATH}/platforms/android-${ANDROID_VERSION}/arch-arm # armera-v7平台 export CFLAGS="-march=armv7-a -mfloat-abi=softfp -fprefetch-loop-arrays \ -D__ANDROID_API__=${ANDROID_VERSION} --sysroot=${SYSROOT} \ -isystem ${NDK_PATH}/sysroot/usr/include \ -isystem ${NDK_PATH}/sysroot/usr/include/${HOST}" export LDFLAGS=-pie TOOLCHAIN=${NDK_PATH}/toolchains/${HOST}-${TOOLCHAIN_VERSION}/prebuilt/${BUILD_PLATFORM} cat <<EOF >toolchain.cmake set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR arm) set(CMAKE_C_COMPILER ${TOOLCHAIN}/bin/${HOST}-gcc) set(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN}/${HOST}) EOF cmake -G"Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake \ -DCMAKE_POSITION_INDEPENDENT_CODE=1 \ -DCMAKE_INSTALL_PREFIX=${PREFIX} \ ${MY_SOURCE_DIR} make clean make make install
这里只编译了ARMv7,有需要其他的平台的参考官方脚本修改下
默认编译出来的so库与.a静态库是带有版本号的,不想要可以去掉
1.在libjpeg-turbo-master/CMakeLists.txt 中注释相关
2.还有libjpeg-turbo-master/sharedlib/CMakeLists.txt中注释相关
build.sh文件放在源码目录下,cd 到源码目录
成功后源码目录android目录下就会有想要的静态与动态库了
如果不成功记得先删掉源码目录下的CMakeCache.txt文件,再执行脚本
这样就可以移植到 Androidstudio中进行下一步的JNI开发