終於有時間寫博客了,en~~~~
以前作電商項目,遇到項目中大量的圖片質量處理問題,跳過官方的skia)直接利用libjpeg-turbo處理圖片linux
先說下編譯靜態庫與動態庫後面有時間再寫下如何利用libjpeg-turbo進行圖片質量處理的專題android
os | cmake | ndk |
---|---|---|
macOS Mojave 10.14.2 | 3.10.2.4988404 | android-ndk-r16b |
按照官方的BUILDING.md中的編譯腳本稍做修改命名爲build.shgit
#!/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,有須要其餘的平臺的參考官方腳本修改下github
默認編譯出來的so庫與.a靜態庫是帶有版本號的,不想要能夠去掉
1.在libjpeg-turbo-master/CMakeLists.txt 中註釋相關
2.還有libjpeg-turbo-master/sharedlib/CMakeLists.txt中註釋相關macos
build.sh文件放在源碼目錄下,cd 到源碼目錄
成功後源碼目錄android目錄下就會有想要的靜態與動態庫了 bash
若是不成功記得先刪掉源碼目錄下的CMakeCache.txt文件,再執行腳本ide
這樣就能夠移植到 Androidstudio中進行下一步的JNI開發工具